{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Calibrating a GraphSAGE node classification model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden",
    "tags": [
     "CloudRunner"
    ]
   },
   "source": [
    "<table><tr><td>Run the latest release of this notebook:</td><td><a href=\"https://mybinder.org/v2/gh/stellargraph/stellargraph/master?urlpath=lab/tree/demos/calibration/calibration-node-classification.ipynb\" alt=\"Open In Binder\" target=\"_parent\"><img src=\"https://mybinder.org/badge_logo.svg\"/></a></td><td><a href=\"https://colab.research.google.com/github/stellargraph/stellargraph/blob/master/demos/calibration/calibration-node-classification.ipynb\" alt=\"Open In Colab\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\"/></a></td></tr></table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This notebook demonstrates probability calibration for multi-class node attribute inference. The classifier used is GraphSAGE and the dataset is the citation network Pubmed-Diabetes. Our task is to predict the subject of a paper (the nodes in the graph) that is one of 3 classes. The data are the network structure and for each paper a 500-dimensional TF/IDF word vector.\n",
    "\n",
    "The notebook demonstrates the use of StellarGraph's `TemperatureCalibration` and `IsotonicCalibration` classes as well as supporting methods for calculating the Expected Calibration Error (ECE) and plotting reliability diagrams [2].\n",
    "\n",
    "Since the focus of this notebook is to demonstrate the calibration of StellarGraph's graph neural network models for classification, we do not go into detail on the training and evaluation of said models. We suggest the reader consider the following notebook for more details on how to train and evaluate a GraphSAGE model for node attribute inference,\n",
    "\n",
    "[Stellargraph example: GraphSAGE on the CORA citation network](../node-classification/graphsage-node-classification.ipynb)\n",
    "\n",
    "**References**\n",
    "1. Inductive Representation Learning on Large Graphs. W.L. Hamilton, R. Ying, and J. Leskovec arXiv:1706.02216 \n",
    "[cs.SI], 2017. ([link](http://snap.stanford.edu/graphsage/))\n",
    "\n",
    "2. On Calibration of Modern Neural Networks. C. Guo, G. Pleiss, Y. Sun, and K. Q. Weinberger. \n",
    "ICML 2017. ([link](https://geoffpleiss.com/nn_calibration))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "nbsphinx": "hidden",
    "tags": [
     "CloudRunner"
    ]
   },
   "outputs": [],
   "source": [
    "# install StellarGraph if running on Google Colab\n",
    "import sys\n",
    "if 'google.colab' in sys.modules:\n",
    "  %pip install -q stellargraph[demos]==1.2.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "nbsphinx": "hidden",
    "tags": [
     "VersionCheck"
    ]
   },
   "outputs": [],
   "source": [
    "# verify that we're using the correct version of StellarGraph for this notebook\n",
    "import stellargraph as sg\n",
    "\n",
    "try:\n",
    "    sg.utils.validate_notebook_version(\"1.2.1\")\n",
    "except AttributeError:\n",
    "    raise ValueError(\n",
    "        f\"This notebook requires StellarGraph version 1.2.1, but a different version {sg.__version__} is installed.  Please see <https://github.com/stellargraph/stellargraph/issues/1172>.\"\n",
    "    ) from None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import networkx as nx\n",
    "import pandas as pd\n",
    "import os\n",
    "import itertools\n",
    "\n",
    "import stellargraph as sg\n",
    "from stellargraph.mapper import GraphSAGENodeGenerator\n",
    "from stellargraph.layer import GraphSAGE\n",
    "\n",
    "from tensorflow.keras import layers, optimizers, losses, metrics, Model\n",
    "import tensorflow as tf\n",
    "\n",
    "import numpy as np\n",
    "\n",
    "from sklearn import preprocessing, feature_extraction, model_selection\n",
    "from sklearn.calibration import calibration_curve\n",
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "from sklearn.isotonic import IsotonicRegression\n",
    "\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from stellargraph.calibration import TemperatureCalibration, IsotonicCalibration\n",
    "from stellargraph.calibration import plot_reliability_diagram, expected_calibration_error\n",
    "\n",
    "from stellargraph import datasets\n",
    "from IPython.display import display, HTML\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Given a GraphSAGE model, a node generator, and the number of predictions per point\n",
    "# this method makes n_predictions number of predictions and then returns the average\n",
    "# prediction for each query node.\n",
    "def predict(model, node_generator, n_predictions=1):\n",
    "    preds_ar = np.array([model.predict(node_generator) for _ in range(n_predictions)])\n",
    "    print(preds_ar.shape)\n",
    "    return np.mean(preds_ar, axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Some global parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "tags": [
     "parameters"
    ]
   },
   "outputs": [],
   "source": [
    "epochs = 20  # number of training epochs for GraphSAGE model\n",
    "n_predictions = 5  # number of predictions per query node"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Loading the Pubmed-Diabetes network data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [
     "DataLoadingLinks"
    ]
   },
   "source": [
    "(See [the \"Loading from Pandas\" demo](../basics/loading-pandas.ipynb) for details on how data can be loaded.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": [
     "DataLoading"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "The PubMed Diabetes dataset consists of 19717 scientific publications from PubMed database pertaining to diabetes classified into one of three classes. The citation network consists of 44338 links. Each publication in the dataset is described by a TF/IDF weighted word vector from a dictionary which consists of 500 unique words."
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dataset = datasets.PubMedDiabetes()\n",
    "display(HTML(dataset.description))\n",
    "G, subjects = dataset.load()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "StellarGraph: Undirected multigraph\n",
      " Nodes: 19717, Edges: 44338\n",
      "\n",
      " Node types:\n",
      "  paper: [19717]\n",
      "    Features: float32 vector, length 500\n",
      "    Edge types: paper-cites->paper\n",
      "\n",
      " Edge types:\n",
      "    paper-cites->paper: [44338]\n"
     ]
    }
   ],
   "source": [
    "print(G.info())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Splitting the data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For machine learning, we want to take a subset of the nodes for training, and use the rest for testing. We'll use scikit-learn again to do this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_subjects, test_subjects = model_selection.train_test_split(\n",
    "    subjects, train_size=0.75, test_size=None, stratify=subjects\n",
    ")\n",
    "train_subjects, val_subjects = model_selection.train_test_split(\n",
    "    train_subjects, train_size=0.75, test_size=None, stratify=train_subjects\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(11090, 3697, 4930)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_subjects), len(val_subjects), len(test_subjects)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note using stratified sampling gives the following counts:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Counter({3: 4353, 2: 4429, 1: 2308}),\n",
       " Counter({2: 1477, 3: 1451, 1: 769}),\n",
       " Counter({3: 1935, 2: 1969, 1: 1026}))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from collections import Counter\n",
    "\n",
    "Counter(train_subjects), Counter(val_subjects), Counter(test_subjects)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The training set has class imbalance that might need to be compensated, e.g., via using a weighted cross-entropy loss in model training, with class weights inversely proportional to class support. However, we will ignore the class imbalance in this example, for simplicity."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Converting to numeric arrays"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For our categorical target, we will use one-hot vectors that will be fed into a soft-max Keras layer during training. To do this conversion ..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_encoding = preprocessing.LabelBinarizer()\n",
    "\n",
    "train_targets = target_encoding.fit_transform(train_subjects)\n",
    "val_targets = target_encoding.transform(val_subjects)\n",
    "test_targets = target_encoding.transform(test_subjects)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 1],\n",
       "       [0, 1, 0],\n",
       "       [0, 0, 1],\n",
       "       ...,\n",
       "       [1, 0, 0],\n",
       "       [0, 0, 1],\n",
       "       [0, 0, 1]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_targets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Creating the GraphSAGE model in Keras"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To feed data from the graph to the Keras model, we need a node generator. The node generators are specialized to the model and the learning task. Since we are predicting node attributes using a GraphSAGE model, we will opt to use `GraphSAGENodeGenerator` here.\n",
    "\n",
    "We need two other parameters, i) the `batch_size` to use for training and ii) the number of nodes to sample at each level of the model. Here we choose a two-level model with 10 nodes sampled in the first layer, and 5 in the second."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 50\n",
    "num_samples = [10, 5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A `GraphSAGENodeGenerator` object is required to send the node features in sampled subgraphs to Keras."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "generator = GraphSAGENodeGenerator(G, batch_size, num_samples)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For training, we map only the training nodes returned from our splitter and the target values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_gen = generator.flow(train_subjects.index, train_targets)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can specify our machine learning model, we need a few more parameters for this:\n",
    "\n",
    " * the `layer_sizes` is a list of hidden feature sizes of each layer in the model. In this example we use 32-dimensional hidden node features at each layer.\n",
    " * The `bias` and `dropout` are internal parameters of the model. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "graphsage_model = GraphSAGE(\n",
    "    layer_sizes=[32, 32], generator=generator, bias=True, dropout=0.5,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we create a model to predict the 3 categories using Keras softmax layers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_inp, x_out = graphsage_model.in_out_tensors()\n",
    "logits = layers.Dense(units=train_targets.shape[1], activation=\"linear\")(x_out)\n",
    "\n",
    "prediction = layers.Activation(activation=\"softmax\")(logits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TensorShape([None, 3])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training the model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's create the actual Keras model with the graph inputs `x_inp` provided by the `graph_model` and outputs being the predictions from the softmax layer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = Model(inputs=x_inp, outputs=prediction)\n",
    "model.compile(\n",
    "    optimizer=optimizers.Adam(lr=0.005),\n",
    "    loss=losses.categorical_crossentropy,\n",
    "    metrics=[metrics.categorical_accuracy],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Train the model, keeping track of its loss and accuracy on the training set, and its generalisation performance on the test set (we need to create another generator over the test data for this)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "val_gen = generator.flow(val_subjects.index, val_targets)\n",
    "test_gen = generator.flow(test_subjects.index, test_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  ['...']\n",
      "  ['...']\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(\n",
    "    train_gen, epochs=epochs, validation_data=val_gen, verbose=0, shuffle=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sg.utils.plot_history(history)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have trained the model, we can evaluate on the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  ['...']\n",
      "99/99 [==============================] - 3s 29ms/step - loss: 0.3183 - categorical_accuracy: 0.8815\n",
      "\n",
      "Test Set Metrics:\n",
      "\tloss: 0.3183\n",
      "\tcategorical_accuracy: 0.8815\n"
     ]
    }
   ],
   "source": [
    "test_metrics = model.evaluate(test_gen)\n",
    "print(\"\\nTest Set Metrics:\")\n",
    "for name, val in zip(model.metrics_names, test_metrics):\n",
    "    print(f\"\\t{name}: {val:0.4f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calibration Curves\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We want to determine if the classifier produces well-calibrated probabilities. Calibration curves, also known as reliability diagrams, are a visual method for this task. See reference [2] for more details.\n",
    "\n",
    "Diagnosis of model miscalibration should be performed on a held-out dataset that was not used for training. We are going to utilise our test set for this purpose. Equivalently, we can use our validation dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_nodes = test_subjects.index\n",
    "test_node_generator = generator.flow(test_nodes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5, 4930, 3)\n"
     ]
    }
   ],
   "source": [
    "# test_predictions holds the model's probabilistic output predictions\n",
    "test_predictions = predict(model, test_node_generator, n_predictions=n_predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>pid</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>15531498</th>\n",
       "      <td>0.000916</td>\n",
       "      <td>0.171522</td>\n",
       "      <td>0.827562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8071960</th>\n",
       "      <td>0.000386</td>\n",
       "      <td>0.984824</td>\n",
       "      <td>0.014790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1769441</th>\n",
       "      <td>0.774302</td>\n",
       "      <td>0.192302</td>\n",
       "      <td>0.033396</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9230640</th>\n",
       "      <td>0.000404</td>\n",
       "      <td>0.020510</td>\n",
       "      <td>0.979086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18375412</th>\n",
       "      <td>0.000313</td>\n",
       "      <td>0.973282</td>\n",
       "      <td>0.026405</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 1         2         3\n",
       "pid                                   \n",
       "15531498  0.000916  0.171522  0.827562\n",
       "8071960   0.000386  0.984824  0.014790\n",
       "1769441   0.774302  0.192302  0.033396\n",
       "9230640   0.000404  0.020510  0.979086\n",
       "18375412  0.000313  0.973282  0.026405"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Convert the list of dictionaries to a dataframe so that it is easier to work with the data\n",
    "test_pred_results = pd.DataFrame(\n",
    "    test_predictions, columns=target_encoding.classes_, index=test_subjects.index\n",
    ")\n",
    "test_pred_results.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are going to draw one calibration curve for each column in `test_pred_results`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4930, 3)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_pred = test_pred_results.values\n",
    "test_pred.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "calibration_data = []\n",
    "for i in range(test_pred.shape[1]):  # iterate over classes\n",
    "    calibration_data.append(\n",
    "        calibration_curve(\n",
    "            y_prob=test_pred[:, i], y_true=test_targets[:, i], n_bins=10, normalize=True\n",
    "        )\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((array([0.01083936, 0.21472393, 0.33333333, 0.36923077, 0.51470588,\n",
       "         0.56716418, 0.82      , 0.81395349, 0.7755102 , 0.96714286]),\n",
       "  array([0.00766683, 0.14377305, 0.24319112, 0.34574198, 0.4578391 ,\n",
       "         0.54677253, 0.64486979, 0.7513665 , 0.85948025, 0.9750644 ])),\n",
       " tuple)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calibration_data[0], type(calibration_data[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Also calculate Expected Calibration Error (ECE) for each class. See equation (3) within reference [2] for the definition of ECE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "ece = []\n",
    "for i in range(test_pred.shape[1]):\n",
    "    fraction_of_positives, mean_predicted_value = calibration_data[i]\n",
    "    ece.append(\n",
    "        expected_calibration_error(\n",
    "            prediction_probabilities=test_pred[:, i],\n",
    "            accuracy=fraction_of_positives,\n",
    "            confidence=mean_predicted_value,\n",
    "        )\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.012706240610276162, 0.02207298490740294, 0.018337584007971253]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ece"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Draw the reliability diagrams for each class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_reliability_diagram(calibration_data, test_pred, ece=ece)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Temperature scaling calibration"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Temperature scaling is an extension of [Platt scaling](https://en.wikipedia.org/wiki/Platt_scaling) for calibrating multi-class classification models. It was proposed in reference [2]. \n",
    "\n",
    "Temperature scaling uses a single parameter called the `temperature` to scale a classifier's non-probabilistic outputs (logits) before the application of the softmax operator that generates the model's probabilistic outputs.\n",
    "\n",
    "$\\hat{q}_i = \\max\\limits_{k} \\sigma_{SM}(\\mathbf{z}_i/T)^{(k)}$ \n",
    "\n",
    "where $\\hat{q}_i$ is the calibrated probability for the predicted class of the i-th node; $\\mathbf{z}_i$ is the vector of logits; $T$ is the temperature; $k$ is the k-th class; and, $\\sigma_{SM}$ is the softmax function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# this model gives the model's non-probabilistic outputs required for Temperature scaling.\n",
    "score_model = Model(inputs=x_inp, outputs=logits)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Prepare the training data such that inputs are the model output logits and corresponding true class labels are one-hot encoded.\n",
    "\n",
    "We are going to train the calibration model on the validation dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "val_nodes = val_subjects.index\n",
    "val_node_generator = generator.flow(val_nodes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5, 4930, 3)\n",
      "(5, 3697, 3)\n"
     ]
    }
   ],
   "source": [
    "test_score_predictions = predict(\n",
    "    score_model, test_node_generator, n_predictions=n_predictions\n",
    ")\n",
    "val_score_predictions = predict(\n",
    "    score_model, val_node_generator, n_predictions=n_predictions\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((4930, 3), (3697, 3))"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_score_predictions.shape, val_score_predictions.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_cal_train_all = val_score_predictions\n",
    "y_cal_train_all = val_targets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are going to split the above data to a training and validation set. We are going to use the former for training the calibration model and the latter for early stopping."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_cal_train, x_cal_val, y_cal_train, y_cal_val = model_selection.train_test_split(\n",
    "    x_cal_train_all, y_cal_train_all\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((2772, 3), (925, 3), (2772, 3), (925, 3))"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_cal_train.shape, x_cal_val.shape, y_cal_train.shape, y_cal_val.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create the calibration object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<stellargraph.calibration.TemperatureCalibration at 0x1427d8c50>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calibration_model_temperature = TemperatureCalibration(epochs=1000)\n",
    "calibration_model_temperature"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now call the `fit` method to train the calibration model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using Early Stopping based on performance evaluated on given validation set.\n"
     ]
    }
   ],
   "source": [
    "calibration_model_temperature.fit(\n",
    "    x_train=x_cal_train, y_train=y_cal_train, x_val=x_cal_val, y_val=y_cal_val\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAFNCAYAAADLm0PlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXxV1bn/8c+TGUhChIR5FFDmMQVFVHAqagW1VqWtY5Wr1Wu91rZUrVb789Zr1Vqr1Wqr1lZFrVqxoojVKtaBQZBZQUQIY5iHkPn5/bFP8BhDCJCTnZzzfb9e+3X2XmvtfZ6TF9l5WGfttczdERERERGRQ5cUdgAiIiIiIvFCybWIiIiISD1Rci0iIiIiUk+UXIuIiIiI1BMl1yIiIiIi9UTJtYiIiIhIPVFyLSIiIiJST5RcS0Izs++a2Wwz22Vm68zsVTMbdQjXW2lmJ9VnjCIijVHkvlm1VZrZnqjj74Ud36Ews/WH8rdAEltK2AGIhMXMrgMmAVcA04BSYCwwHng3xNBERBo9d8+s2jezlcBl7v5GeBHVjZmluHt5U38PabzUcy0JycxaArcBV7n7C+6+293L3P1ld/+JmaWb2b1mtjay3Wtm6ZFzc83sn2a2zcy2mNkMM0sys78CXYCXIz03Pw3zM4qIhMnMks3sF2a2wsw2mdmTZpYTqettZuVm9gMzW2Nmm83sUjMbaWYLI/fXe6KudYWZvWlmfzSzHWa22MyOi6pvZWZPRHqcV5vZLWaWVO3cB8xsKzAp8v7/jtzDC83sL2aWFWn/HNAGeD1yL7/GzMaa2fJqn29v77aZ3WFmT5nZM2a2Ezi/ts8v8U3JtSSqo4EM4MV91N8IHAUMBgYBw4GbInU/BgqAPKAtcAPg7n4BsAo4w90z3f3O2IUvItLoXQ+cAowCOgFlwG+j6pOBgcDhwCXA7wnur6Mj5ZeY2Yio9scBHwOtgTuAf5hZdqTuSWB75FrDgTOBC6qdOw/IBe6OlN0GtAMGAEcS3Pdx9+8AG4FTIvfy++r4eb8N/AVoCTxfh88vcUrJtSSq1sCmWr62+x5wm7tvdPdC4Fa+vFGXAe2BrpHe7hnu7rEPWUSkSbkCmOTua929mOA+ep6ZWVSb29y9xN2nRI6fcPdN7r4KeA8YEtV2tbv/IXLffYKgk+ObZtaVIHm+zt2L3H0dcB9wftS5K9z9EXevcPc97r7U3d9091J3Xw/cCxx/iJ/3bXef6u6V7r6njp9f4pDGXEui2gzk1jIurgPwRdTxF5EygN8AvyT4yhDgYXe/I4axiog0KZEEsjMw1cyiOx+SCDo3ACrcfXNU3R5gQ7XjzKjjgmpvU3Vf7krwTWRhVN6aBEQP41hdLb4OwO+AkUBWpP26uny2Wux9jzp8/k2H+F7SiKnnWhLV+0AJwVeHNVlLcMOu0iVShrvvdPcfu/vhwDjgOjM7MdJOPdgikvAi3+atAU5w95yoLcPdDzax7FTtuOq+vBrYBRwW9T7Z7j40OqRq5/4G2A30d/ds4DLAamm/G2hedWBmqUCram32nhOjzy9NhJJrSUjuvh24GXjAzM40s+Zmlmpmp5rZncDTwE1mlmdmuZG2fwMws2+ZWc9Iz8R2oAKojFx6A8GYPxGRRPcQcIeZdQYwszZmdsYhXK9z5OHEFDP7PkHP8Ovu/jnwAXCnmWVFHjDvtZ+p9LIIEvIdZtYFuK5affV7+RKglZmdGEmsb2X/OVR9f35pIpRcS8Jy97sJbqg3AYUEvR9XA/8A/h8wG5gPLAA+ipQB9ALeILgxvw/8wd3fitT9miAp32Zm1zfQRxERaYzuJLhXvhmZQeM9YGjtp9TqHYIx2FsIHj48O9JRAjAByAGWRuqfIXjgfF9uJnjQcDvBg+3PV6u/Hbg9ci+/OtLb/COCBycLgPXsf2hHfX9+aSJMz2GJiIhIY2ZmVwDnuLsW6ZJGTz3XIiIiIiL1RMm1iIiIiEg90bAQEREREZF6op5rEREREZF6EtPk2szGmtknZrbczCbVUH+FmS0ws3lm9q6Z9Y2qG2hm75vZokibjFjGKiIiIiJyqGI2LMTMkoFPgZMJpq2ZBUxw98VRbbLdfUdkfxzwQ3cfa2YpBFOfXeDuH5tZa2Cbu1fs6/1yc3O9W7duMfksIiKxNmfOnE3unhd2HA1J920Raapqu2fHcvnz4cByd18BYGaTgfHA3uS6KrGOaMGXqxudAsx3948j7aKXR61Rt27dmD17dj2FLiLSsMzsi7BjaGi6b4tIU1XbPTuWw0I6EizKUaUgUvYVZnaVmX1GMNn6NZHiIwA3s2lm9pGZ/bSmNzCziWY228xmFxYW1nP4IiIiIiIHJvQHGt39AXfvAfyMYKU8CHrURwHfi7yeZWYn1nDuw+6e7+75eXkJ9W2qiIiIiDRCsUyu1wCdo447Rcr2ZTJwZmS/AHjH3Te5exEwFS0ZKiIiIiKNXCzHXM8CeplZd4Kk+nzgu9ENzKyXuy+LHJ4OVO1PA35qZs2BUuB44LcxjFVEqikrK6OgoIDi4uKwQ4krGRkZdOrUidTU1LBDERGRGIhZcu3u5WZ2NUGinAw86u6LzOw2YLa7TwGuNrOTgDJgK3BR5NytZnYPQYLuwFR3fyVWsYrI1xUUFJCVlUW3bt0ws7DDiQvuzubNmykoKKB79+5hhyMiIjEQy55r3H0qwZCO6LKbo/Z/VMu5fwP+FrvoRKQ2xcXFSqzrmZnRunVrGuMD2Gb2KPAtYKO796+hvjfwGMEQvRvd/a5q9cnAbGCNu3+rAUIWEWmUQn+gUUQaLyXW9a8R/0wfB8bWUr+FYEanu/ZR/yNgST3HJCLS5Ci5FpFGafPmzQwePJjBgwfTrl07OnbsuPe4tLS0Tte45JJL+OSTT2pt88ADD/Dkk0/WR8hNmru/Q5BA76t+o7vPIhjG9xVm1onguZk/xS5CEZGmIabDQkREDlbr1q2ZN28eAL/85S/JzMzk+uuv/0obd8fdSUqquZ/gscce2+/7XHXVVYcerNwL/BTICjsQEZGwJXZyXfgJrF8AA84JOxIRqaPly5czbtw4hgwZwty5c5k+fTq33norH330EXv27OG8887j5puDRztGjRrF/fffT//+/cnNzeWKK67g1VdfpXnz5rz00ku0adOGm266idzcXK699lpGjRrFqFGjePPNN9m+fTuPPfYYI0eOZPfu3Vx44YUsWbKEvn37snLlSv70pz8xePDgkH8a4TOzqnHac8xsdB3aTwQmAnTp0iXG0YlIfamsdMornUoPXisqnPLKSircqah0yiuC1+rH5ZWVVLrjDpUedIpUOjgOVWX43jqnquPkq+0hqiyqPfC16wet2bvut0d2fO8xe4+zm6XwrYEd6vVnldjJ9Yx7YP5k2LEWRv43NN6xkCISZenSpTzxxBPk5+cDcMcdd9CqVSvKy8sZM2YM55xzDn379v3KOdu3b+f444/njjvu4LrrruPRRx9l0qRJX7u2uzNz5kymTJnCbbfdxmuvvcbvf/972rVrx/PPP8/HH3/M0KGadj/KMcA4MzsNyACyzexv7v79mhq7+8PAwwD5+fleUxsRqV1FpbOzuIxdJeXsKa1gd2kFRaXlFJVUUFRWQVFJOUVVZaUVFJVWUFxWQWl5JSUVlZSWB1tJeVBWGlVWdVxSVklZZWUkQfa9iWm86ZHXQsl1vRp3H1SUwPRfwM51cMrtsI+vl0US2a0vL2Lx2h31es2+HbK55Yx+B3Vujx499ibWAE8//TR//vOfKS8vZ+3atSxevPhryXWzZs049dRTARg2bBgzZsyo8dpnn3323jYrV64E4N133+VnP/sZAIMGDaJfv4OLOx65+8+BnwNEeq6v31diLSJfV1xWQeHOEjbtKmHTrlI27Sphy+5Stu8pY3tRWfAate0oLmNncXmdr5+SZDRLSyYjNZn0lCTSUpJIS07au988LYWcSFlaStQWOU5JMlKSjOSkJJKTIDkpKXL85fb146Sv1CUlGUkGRvBK1L5Z1StQvQzDInWGkZQUfd6+21cx+/IhcosqC46DnZTk+u9YTezkOiUdvv0oZLaDD/4AO9fDWQ8F5SLSaLVo0WLv/rJly/jd737HzJkzycnJ4fvf/36NC9+kpaXt3U9OTqa8vOY/Tunp6fttE4/M7GlgNJBrZgXALUAqgLs/ZGbtCKbaywYqzexaoK+71+//ukTihLuztaiMtdv2ULB1D2u3Rbbte9i448tkeldJzfeZjNQkWjZLpWWzVLIzUmnfMoPe7bLIjpS1bJZKZnoKzdOTaZ6WTPO0lMhr9H4KaSnqNGxoiZ1cQ9BTPfbXkN0ept8Muwvh/Ccho2XYkYk0Ggfbw9wQduzYQVZWFtnZ2axbt45p06YxdmxtM8oduGOOOYZnn32WY489lgULFrB48eJ6vX5j4O4T9lO/Hui0nzb/Bv5df1GJNG7uzoYdJazYtIvPN+3m88Ldwevm3azdtofissqvtM9ITaJDTjPaZmUwoFMOuZlp5Gamk5eZTm5WsJ+bmU6rFmlkpCaH9KnkUCm5huA7gmN+FPRgv/RDeOw0+O4z0LLWvyMi0ggMHTqUvn370rt3b7p27coxxxxT7+/x3//931x44YX07dt379aypf4DLpJItuwuZcm6HSxeu4Ml63awdP1OVm7eTVFpxd42GalJdGvdgiPbZnHCkW3oeFgzOuQ0o2NO8HpY89TGPNe91BPzOBmhnp+f77Nnzz70C332JjxzIaQ2gwlPQ6f8/Z8jEoeWLFlCnz59wg6jUSgvL6e8vJyMjAyWLVvGKaecwrJly0hJObj+iZp+tmY2x90T6oZTb/dtkXq2dXcpc1dvZe6qbSxYs50l63awYUfJ3vo2Wen0bp9Nj7wWHJ7bgsPzMume24J22RkkJSl5TgS13bPVc11djxPgsunw1HlBD/b4+2HguWFHJSIh2rVrFyeeeCLl5eW4O3/84x8POrEWkcbF3fmscBcfrNjC3FXbmLtqKys27QYgyeCItlkc0yOXPu2zI1sWrTP1bJbsm/461KRNH7j8LXj2Anjhcti4BE74hWYSEUlQOTk5zJkzJ+wwRKSerNm2h/8s38R7yzfx3meb2bgz6JVu3SKNIV0O45z8TgzpfBgDO7WkRbpSJTkw+hezLy1awwX/gKk/hnfvCRacOetBPegoIiLSxJRXVPLRqm28sWQDbyzZwIrCoGc6NzONo3vkckyP1hzdozVdWjXXmGg5ZEqua5OSBmfcB236wrQb4eHRcO4T0G5A2JGJiIhILYrLKnhr6UamL9nAW0s3srWojNRk46jDW/O9EV0Z1TOXI9pmKpmWeqfken/M4Kgrof0geO4S+NNJcPrdMERrJIiIiDQmZRWVvLt8E1PmreX1RevZXVpBTvNUTjiyDSf1bcuxvXLJykgNO0yJc0qu66rrSLhiBjz/A3jpKlj1Ppx2VzCriIiIiIRm0drtTJ65mn/OX8vWojKyM1I4Y1AHxg3qwPDurUhJ1jNT0nD0r+1AZLYJxmEf9xOY+zd45ARYvzDsqETi0pgxY5g2bdpXyu69916uvPLKfZ6TmZkJwNq1aznnnHNqbDN69Gj2N/3bvffeS1FR0d7j0047jW3bttU1dBFpALtLypk8cxXj73+X0+97l2dmr+aYnrk8cmE+s246iTu+PZCRPXOVWEuD07+4A5WUDCfcBN97HnZvgkfGwHv3Q2Xl/s8VkTqbMGECkydP/krZ5MmTmTCh1oUEAejQoQN///vfD/q9qyfXU6dOJScn56CvJyL1Z+Wm3dz80kKG3/4Gk15YwJ6yCm45oy8zbziR+787lJP7tiU9RasbSniUXB+sXifBD9+HnifD6zfCX8fD9jVhRyUSN8455xxeeeUVSktLAVi5ciVr165lyJAhnHjiiQwdOpQBAwbw0ksvfe3clStX0r9/fwD27NnD+eefT58+fTjrrLPYs2fP3nZXXnkl+fn59OvXj1tuuQWA++67j7Vr1zJmzBjGjBkDQLdu3di0aRMA99xzD/3796d///7ce++9e9+vT58+XH755fTr149TTjnlK+8jIofG3Zm9cgsTn5jNmLv/zeSZq/lm/3Y8f+XRTLv2OC45pjs5zdPCDlME0JjrQ9MiF85/Ej56Al77OTx4NJxye/Cwo54+FjkkrVq1Yvjw4bz66quMHz+eyZMnc+6559KsWTNefPFFsrOz2bRpE0cddRTjxo3b5xP/Dz74IM2bN2fJkiXMnz+foUOH7q27/fbbadWqFRUVFZx44onMnz+fa665hnvuuYe33nqL3Nzcr1xrzpw5PPbYY3z44Ye4OyNGjOD444/nsMMOY9myZTz99NM88sgjnHvuuTz//PN8//t68FnkULg7byzZyANvLWfe6m3kNE/lqtE9uXBkV9pkZYQdnkiNlFwfKjMYdhF0GwVT/humXA0LnoUzfgetDg87OpH68eokWL+gfq/ZbgCceketTaqGhlQl13/+859xd2644QbeeecdkpKSWLNmDRs2bKBdu3Y1XuOdd97hmmuuAWDgwIEMHDhwb92zzz7Lww8/THl5OevWrWPx4sVfqa/u3Xff5ayzzqJFixYAnH322cyYMYNx48bRvXt3Bg8eDMCwYcNYuXLlgfw0RCSKu/Pm0o3c+8YyFqzZTpdWzbltfD/OGdaJ5mlKXaRx07/Q+tK6B1z0T/jocZh+C/xhJIy5AY76ISTrxyxyMMaPH8///M//8NFHH1FUVMSwYcN4/PHHKSwsZM6cOaSmptKtWzeKi4sP+Nqff/45d911F7NmzeKwww7j4osvPqjrVElP/3I55OTkZA0LETlI73xayN2vf8LHBUFS/ZtzBnLWkI56MFGaDGV99SkpCfIvhSPGwivXw/RfwMdPw9g74PDjw45O5ODtp4c5VjIzMxkzZgyXXnrp3gcZt2/fTps2bUhNTeWtt97iiy++qPUaxx13HE899RQnnHACCxcuZP78+QDs2LGDFi1a0LJlSzZs2MCrr77K6NGjAcjKymLnzp1fGxZy7LHHcvHFFzNp0iTcnRdffJG//vWv9f/BRRLQpxt2cvsrS3j700I65jTj/749gLOHdiJVSbU0MUquYyG7QzAWe+krMO0GeGIc9BkHp/w/OKxr2NGJNCkTJkzgrLPO2jtzyPe+9z3OOOMMBgwYQH5+Pr179671/CuvvJJLLrmEPn360KdPH4YNGwbAoEGDGDJkCL1796Zz584cc8wxe8+ZOHEiY8eOpUOHDrz11lt7y4cOHcrFF1/M8OHDAbjssssYMmSIhoCIHILCnSX89o1PmTxzFS3SU7jp9D5ccHRXzfghTZa5e9gx1Iv8/Hzf39y1oSgrhvd/DzPuAa+EkdfAMddAelbYkYnUasmSJfTp0yfsMOJSTT9bM5vj7vkhhRSKRnvflgZRUek8+eEX/Oa1Tygqq+CCo7pyzYm9aNVCs35I41fbPVs917GWmhEsOjNoAky/Gd65E2b/GY79MeT/IKgXERFJIIvWbueGFxfy8eptHNOzNbeO60/PNplhhyVSLzSQqaG07ATnPAqXvxnMkjDtBvj9sGAav4rysKMTERGJuT2lFfy/fy5m3P3/Yc3WIu49bzB/+8EIJdYSV9Rz3dA6DoMLX4IVb8O/bg2m73v3t3DMtTDofEhJ3/81REREmpi5q7by42c/ZsWm3UwY3oVJY3vTsnlq2GGJ1Dv1XIfl8OPhsn/B+U9Beja8fA38blCwlHrJrrCjEwGCuWalfulnKommtLySu1//hG8/+B4l5ZU8dfkIfn32ACXWErfUcx0mM+h9Ohx5Gqx4K3jo8fUbYcZdwXjs/EuhZcewo5QElZGRwebNm2nduvU+Vz+UA+PubN68mYwMPWshiWH5xp38aPI8Fq3dwTnDOnHzGX3JzlBSLfFNyXVjYAY9Tgi21bPgP/fCjLuD4SJ9vgXD/wu6jtSS6tKgOnXqREFBAYWFhWGHElcyMjLo1KlT2GGIxNyLcwu44YWFNEtL5o8XDOOb/WpeRVUk3ii5bmw6fyOYI3vrFzDrT8EDj4tfgrb9YehFMOAcaN4q7CglAaSmptK9e/ewwxCRJqa4rIJbX17E0zNXM7x7K34/YQhts/VtjSQOjblurA7rCqf8Cq5bAuN+D0nJ8OpP4O4j4dkL4dNpmmVEREQalc837easP7zH0zNX88PRPXjqshFKrCXhqOe6sUtrDkMvDLb1C2DeUzD/maA3O7Mt9D8H+p0JHfOD5ddFRERCMGNZIVc9+RFJScZjF3+DMb3bhB2SSCiUXDcl7QbA2F/DSbfC8ukw90mY9Qh88ABkd4S+ZyrRFhGRBuXuPPH+F9z2z8X0apPJIxfm07lV87DDEgmNkuumKCUtmGWk9+lQvB0+eRUW/ePLRDurA/Q6GY74JnQ/HtI1Ob+I1M7MHgW+BWx09/411PcGHgOGAje6+12R8s7AE0BbwIGH3f13DRa4hKqsopJbpiziqQ9XcVKfttx7/mAy05VaSGLTb0BTl9EyWHxm0PlfJtpL/wkLX4CP/gLJadBtFPQ6BXqeBK17atYREanJ48D9BIlyTbYA1wBnVisvB37s7h+ZWRYwx8ymu/vimEUqjcKO4jL+64k5vL9iM1eO7sFPTjmSpCT9fRFRch1PohPt8lJY9T4sez3YXpsUtMlqHyTb3Y4NXlsdrmRbRHD3d8ysWy31G4GNZnZ6tfJ1wLrI/k4zWwJ0BJRcx7GNO4q56LFZLN+4k7u/M4hvD9P0kiJVlFzHq5S0YBXIw4+Hb94OWz6HFf+GlTOCpdcXPBe0y+4IXY6GTt+ATvnBuG4twS4iByGSnA8BPgw3EomllZt2c8GjH7J5Vyl/vugbHHdEXtghiTQqSq4TRavuwZZ/CbjDpmWw8h34fAZ88R4s/HvQLjkN2g8KHorsOAzaD4RWPSBZ/1REZN/MLBN4HrjW3XfU0m4iMBGgS5cuDRSd1JeFa7Zz8WMzqah0nrr8KAZ3zgk7JJFGRxlTIjKDvCOC7RuXBWXb18Ca2VAwCwpmw5zH4cMHg7qUDGjTJ1jIpt1AaNcf2vSFZrqpigiYWSpBYv2ku79QW1t3fxh4GCA/P98bIDypJ7NWbuGSx2bRslkqf7l0OD3b6GF5kZoouZZAy47B1nd8cFxRBoVLYf1C2LAwmGN76Ssw969fntOiDeT2CrbWVa89IaererpFEoSZGfBnYIm73xN2PBIbH67YzCWPz6JdywyevGwE7Vs2CzskkUZLGZDULDk1GH/dbsCXZe6wc12QcG9cDJuXwablsHgK7NkSdW4atOwMOV2itq5f7me21TzcIo2MmT0NjAZyzawAuAVIBXD3h8ysHTAbyAYqzexaoC8wELgAWGBm8yKXu8HdpzbwR5AYef+zzVz6+Cw6HtaMpy4bQRutuChSKyXXUndmkN0h2I445at1uzdHku1lwevWL2DbqqC3u2jTV9smpwe95JntICtq23vcHrLaQnq2ZjIRaSDuPmE/9euBmqaEeBfQL2qc+s/yTfzgL7Po0qo5T152FHlZeuBdZH+UXEv9aNE62Loc9fW60t2wbXWQbG+LJN3bC2DXBlj3MXw6Dcp2f/28lAxo3hqatYLmrYL9va9R5c0OC6YhTM+GjGzNdiIiUg9mfr6FH/xlFt1at+Bvl40gN1P3VpG6UHItsZfWAtr0DrZ9KdkJO9d/ue1aHyTfRVuDISdFm2H9/OB1zzaCheD2ITnty0Q7PSuy3/LL/fRMSG0Gqc1reK2prFmwJSXX+49GRKQxWrhmOz94fBYdcpopsRY5QEqupXFIzwq23F77b1tZESTYRZsjifeWIDkv2RGsUlm1X7ITincE+1tXRva3Q2kRVJYdeIxJqUHinpIWvCanB2PTUyKvyenV6qO2qrKk1GC8eVJKsFlyZD+p2nFyZNtPmSUFX8hbEmCRY/v68Vfqqh9Xta3hPIuMjd9nXfR7RIs6/kpdtXb7GvZTL9fb1zn1EF9tLCn49yDSRC3fuIsLH51JdrNU/vYDJdYiByqmybWZjQV+ByQDf3L3O6rVXwFcBVQAu4CJ7r44shDBEuCTSNMP3P2KWMYqTUhS8pfDUA5WRRmUFUHZni9fS4u+XlYWKSstgoqS4LzyEqgoDfYrIvvlpZGy0iCpLy+Jqq86pwQqK6GyPNi8Aryy/n4u0jgMvRDG/T7sKEQOyuotRXz/Tx+SZMbfLhtBhxzNCiJyoGKWXJtZMvAAcDJQAMwysynuHr0k7lPu/lCk/TjgHmBspO4zdx8cq/gkwSWnQnLLYLhImNyDnviqZLuyPHK8j7K9x5EyrwyugX+575X7OKaWupqus6/rVj+v8uufaV+f9asF+6ir1m5fdQ15vQPRdsD+24g0Qlt3l3LRYzMpKi3nmf86mu65LcIOSaRJimXP9XBgubuvADCzycB4YG9yXW0VrxYc9F8zkSbKLJgTXPOCi0iIissqmPjX2RRs2cPfLhtBn/bZYYck0mTFcrLhjsDqqOOCSNlXmNlVZvYZcCdwTVRVdzOba2Zvm9mxMYxTREQkYVVWOtc/9zGzVm7l7nMHMbx7q7BDEmnSQl/Jw90fcPcewM+AmyLF64Au7j4EuA54ysy+9t9oM5toZrPNbHZhYWHDBS0iIhIn/m/aUv45fx0/P7U3ZwzqEHY4Ik1eLJPrNUDnqONOkbJ9mQycCeDuJe6+ObI/B/gMOKL6Ce7+sLvnu3t+Xl5evQUuIiKSCCbPXMUf317B94/qwsTjDg87HJG4EMvkehbQy8y6m1kacD4wJbqBmUXPu3Y6sCxSnhd5IBIzOxzoBayIYawiIiIJZdbKLfzipYUcd0QevzyjH6YVcUXqRcyeonL3cjO7GphGMBXfo+6+yMxuA2a7+xTgajM7CSgDtgIXRU4/DrjNzMqASuAKd98Sq1hFREQSydpte7jyb3PodFhzfn/+EFKSQx8lKhI3YjpFgbtPBaZWK7s5av9H+zjveeD5WMYmIiKSiPaUBjODFJdVMnniMFo216JHIvVJ83+JiIgkCHdn0gvzWbR2B49ckE/PNllhhyQSd/Q9kIiISIL4y3sreWneWn588hGc1Ldt2OGIxCUl1/HUFr0AACAASURBVCIiIglg3upt3D51CSf1acMPR/cMOxyRuKXkWkREJM5tKyrlqic/ok1WBnd9ZxBJSZoZRCRWNOZaREQkjlVWOj9+9mM27izmuStGktM8LeyQROKaeq5FRETi2MMzVvCvpRu56fS+DO6cE3Y4InFPybWIiEicmrd6G3dN+4TTB7TnwqO7hh2OSEJQci0iIhKHdpeUc+3kubTJSud/zx6gFRhFGojGXIuIiMSh215ezBdbinj68qNo2UwLxYg0FPVci4iIxJnXFq7jmdmrufL4Hhx1eOuwwxFJKEquRURE4sj67cVMemEBAzu15NqTjgg7HJGEo+RaREQkTrg7P3t+PiVlldx73mDSUvRnXqSh6bdOREQkTjw3p4C3Py1k0qm9OTwvM+xwRBKSkmsREZE4sG77Hn71z8UM796KC47StHsiYVFyLSIi0sS5Oze8sICyikru/PZALW8uEiIl1yIigpk9amYbzWzhPup7m9n7ZlZiZtdXqxtrZp+Y2XIzm9QwEUu0Fz5aw1ufFPLTb/amW26LsMMRSWhKrkVEBOBxYGwt9VuAa4C7ogvNLBl4ADgV6AtMMLO+MYpRarBhRzG3vryIb3Q7jItHdgs7HJGEp+RaRERw93cIEuh91W9091lAWbWq4cByd1/h7qXAZGB87CKV6m76x0JKyiu585xBGg4i0ggouRYRkUPREVgddVwQKauRmU00s9lmNruwsDDmwcW71xetZ/riDfzPyUfQXcNBRBoFJdciItJg3P1hd8939/y8vLyww2nSdpeU88spi+jdLosfjOoedjgiEqHkWkREDsUaoHPUcadImcTYvW98ytrtxdx+Vn9Sk/XnXKSx0G+jiIgcillALzPrbmZpwPnAlJBjinuL1+7g0f+sZMLwzgzr2irscEQkSkrYAYiISPjM7GlgNJBrZgXALUAqgLs/ZGbtgNlANlBpZtcCfd19h5ldDUwDkoFH3X1RGJ8hUVRWOjf+YwEtm6Xys7G9ww5HRKpRci0iIrj7hP3UrycY8lFT3VRgaizikq+bPGs1c1dt4+7vDCKneVrY4YhINRoWIiIi0kRs2V3K/722lBHdW3H20H1OyiIiIVJyLSIi0kTcM/0TdpWU86sz+2OmOa1FGiMl1yIiIk3AknU7eOrDVVxwVFeOaJsVdjgisg9KrkVERBo5d+e2lxeT3SyVa0/qFXY4IlILJdciIiKN3LRFG3h/xWauO/kIPcQo0sgpuRYREWnEissq+N+pSziibSbfHd4l7HBEZD+UXIuIiDRij/7nc1ZtKeLmb/UjRSsxijR6+i0VERFppDbuKOaBN5dzct+2jOqVG3Y4IlIHSq5FREQaqXv/tYzSikpuPK1P2KGISB0puRYREWmEPivcxTOzVvO9EV3pltsi7HBEpI6UXIuIiDRCd037hIyUJK4+oWfYoYjIAVByLSIi0sh8tGorry5cz8TjepCbmR52OCJyAJRci4iINCLuzh2vLiU3M43Lju0edjgicoCUXIuIiDQi//6kkJmfb+FHJ/aiRXpK2OGIyAFSci0iItJIVFQGvdbdWjfnfC0YI9IkKbkWERFpJF6cu4ZPNuzkJ9/sTaoWjBFpkvSbKyIi0giUVVTyu399Sv+O2Zw2oF3Y4YjIQVJyLSISZ8ysk5mNieynm5kmSW4CXviogNVb9nDdyUdgZmGHIyIHScm1iEgcMbNLgSnAnyJFXYGXwotI6qK0vJL7/rWcQZ1zGHNkm7DDEZFDoORaRCS+XAMcBewAcPdPAWVrjdxzc1azZtse/uekXuq1FmnilFyLiMSXYncvrTows2RA2VojVlJewf1vLmdolxyOPyIv7HBE5BApuRYRiS//MbOfAhmRcdfPAP8MOSapxbOzVrNuezHXnXykeq1F4oCSaxGR+PJTYCewFPgR8C/gxlAjkn0qLqvg/reWM7xbK47p2TrscESkHmjpJxGROBEZAvKYu18IPBh2PLJ/T89cxYYdJfz2vMHqtRaJEzHtuTazsWb2iZktN7NJNdRfYWYLzGyemb1rZn2r1Xcxs11mdn0s4xQRiQfuXgEcbmapYcci+1dSXsFDb3/GiO6tGNkjN+xwRKSexKznOtKD8gBwMlAAzDKzKe6+OKrZU+7+UKT9OOAeYGxU/T3Aq7GKUUQkDn0GzDCzl4DdVYXufl94IUlNnp+zhg07Srjn3MFhhyIi9SiWPdfDgeXuviLy5PpkYHx0A3ffEXXYAvCqAzM7E/gcWBTDGEVE4s0qYDrQHMiL2vbLzB41s41mtnAf9WZm90W+jZxvZkOj6u40s0VmtiTSRmMcalFeUclDb3/GoM45jOyhsdYi8SSWY647AqujjguAEdUbmdlVwHVAGnBCpCwT+BlBr7eGhIiI1JG7/+IQTn8cuB94Yh/1pwK9ItsIgnHdI8xsJHAMMDDS7l3geODfhxBLXHtlwTpWbSnixtP7aKy1SJwJ/YFGd38AeMDMvgvcBFwE/BL4rbvvqu2mY2YTgYkAXbp0iX2wIiKNnJlNJ+pbwCrufsr+znX3d8ysWy1NxgNPuLsDH5hZjpm1j7xfBkEniQGpwIYDjz4xVFY6f3jrM3q1yeTkPm3DDkdE6lksk+s1QOeo406Rsn2ZzJdPt48AzjGzO4EcoNLMit39/ugT3P1h4GGA/Pz8r/0xERFJQDdF7WcA3wZK6unaNX0j2dHd3zezt4B1BMn1/e6+pJ7eM+78a+lGPtmwk9+eN4ikJPVai8SbWCbXs4BeZtadIKk+H/hudAMz6+XuyyKHpwPLANz92Kg2vwR2VU+sRUTk69z9w2pFb5tZ9bJ6ZWY9gT4EnSgA083sWHefUUPbhP7G0d25/63ldDqsGWcM7BB2OCISAzF7oNHdy4GrgWnAEuBZd19kZrdFZgYBuDryAMw8gnHXF8UqHhGRRGBm2VFbjpmdCBxWT5ff1zeSZwEfuPsud99FMMvT0TVdwN0fdvd8d8/Py0u8pb7f/2wzH6/exhXH9yAlWeu4icSjmI65dvepwNRqZTdH7f+oDtf4Zf1HJiIStxYRjIE2oJxg1qXL6+naUwg6RSYTDN/b7u7rzGwVcLmZ/TryvscD99bTe8aVB/69nLysdM4Z1mn/jUWkSQr9gUYREalXh7t7WXSBmdXpXm9mTwOjgVwzKwBuIXg4kciaBFOB04DlQBFwSeTUvxPM9rSAILF/zd1fPuRPEmcWFGznP8s38/NTe5ORmhx2OCISI0quRUTiy4fA0GplM2so+xp3n7CfegeuqqG8AvivA4gxIT0yYwWZ6SlMGJF4Y81FEomSaxGROGBmbYD2QDMzG0AwPAMgm2BBGQnRmm17eGXBOi4e2Y3sDK1OLxLPlFyLiMSH04FLCR4y/ENU+U7gUBaWkXrw+H8+B+CSY7qFG4iIxJySaxGROODujwGPmdm57v5s2PHIl3YWlzF55mpOG9CeTofpSwSReKfkWkQkjrj7s2b2TaAfwSIyVeX/G15Uie2ZWavZWVLO5cd2DzsUEWkAdZpk08z+WpcyEREJl5n9gWDNgOuAZsD3gZ6hBpXAyisqeew/KxnevRUDO+WEHY6INIC6zmDfL/rAzJKBYfUfjoiIHKJR7v5dYLO7/4JgPmol1yGZunA9a7bt4fJjDw87FBFpILUm12b2czPbCQw0sx2RbSewEXipQSIUEZEDUVz1ambtIsdaZzsE7s6fZqzg8NwWnNi7TdjhiEgDqTW5dvdfu3sW8Bt3z45sWe7e2t1/3kAxiohI3U01sxzgLmAesBLQA44hmLVyK/MLtnPpqO4kJdn+TxCRuFDXBxr/aWYt3H23mX2fYDGC37n7FzGMTUREDoCZJQGvuvs24Dkz+yfQzN23hBxaQvrLeytp2SyVbw/VUuciiaSuY64fBIrMbBDwY+Az4ImYRSUiIgfM3SuBP0Yd71FiHY512/fw2qL1nPeNzjRL01LnIomkrsl1eWTZ2/HA/e7+AJAVu7BEROQgvWVm48MOItE9+cEqKt254KiuYYciIg2srsNCdprZz4ELgGMjXz1q/VYRkcbnYuBHZlYC7CFYBt3dvVWoUSWQ4rIKnp65ihN7t6VzKy0aI5Jo6tpzfR5QAlzq7usJltf9TcyiEhGRg5VL0PmRCeRFjvNCjSjBvDJ/HZt3l3LRSPVaiySiOiXXkYT6SaClmX0LKHZ3jbkWEWlk3L0C+A7ws8h+e2BwuFEllifeX0mPvBaM6pkbdigiEoK6rtB4LjCT4IZ9LvChmZ0Ty8BEROTAmdn9wBiCYXwARcBD4UWUWOau2srHBdu5aGQ3zDT9nkgiquuY6xuBb7j7RgAzywPeAP4eq8BEROSgjHT3oWY2F8Ddt5hZWthBJYq/vLeSzPQUztb0eyIJq65jrpOqEuuIzQdwroiINJyyyEPnDmBmrYHKcENKDBt3FvPKgnWcM6wTmel17bsSkXhT19/+18xsGvB05Pg8YGpsQhIRkUPwAPA8kGdmtxIM5bs13JASwzMzV1NW4Vx4tB5kFElktSbXZtYTaOvuPzGzs4FRkar3CR5wFBGRRsTdnzCzOcBJkaLvuPvCMGNKBBWVztMzVzGqZy6H52WGHY6IhGh/QzvuBXYAuPsL7n6du18HvBipExGRxicZKANK0RC+BvH2pxtZu72Y747oEnYoIhKy/d1027r7guqFkbJuMYlIREQOmpndSDCErwPBmgRPRRYBkxh66sNV5GWlc3LftmGHIiIh29+Y65xa6prVZyAiIlIvLgSGuHsRgJndDswFfh1qVHFs7bY9vLl0I1eO7kFqsr4oEEl0+7sLzDazy6sXmtllwJzYhCQiIodgHV/tOEmJlEmMTJ61GgfO/4aGhIjI/nuurwVeNLPv8WUynQ+kAWfFMjARETkoW4BFkRmeHDgFmGVm9wBEnpuRelJeUckzs1ZxXK88OrdqHnY4ItII1Jpcu/sGYKSZjQH6R4pfcfc3Yx6ZiIgcjFciW5UPwgokEby5dCMbdpRw23j1WotIoE7zXLv7W8BbMY5FREQOkbv/OewYEslTM1fRNjudE3u3CTsUEWkk9OSFiEgcMbOxZjbLzDaa2RYz22pmW8KOKx6t3lLE258Wcl5+Z1L0IKOIROhuICISX+4H/gvoCOQBuZHXWpnZo5GEvMYFZyxwn5ktN7P5ZjY0qq6Lmb1uZkvMbLGZdauXT9LIPTNrNQacN1xDQkTkS0quRUTiSwEwz93L3L2iaqvDeY8DY2upPxXoFdkmAg9G1T0B/Mbd+wDDgY0HFXkTUl5RyXNzVjP6yDZ0zNHMtCLypTqNuRYRkSbjp8DLZvZvoKSq0N3vq+0kd39nPz3O44En3N2BD8wsx8zaA4cBKe4+PXKdXYcWftMwY9kmNuwo4dZxncMORUQaGSXXIiLx5VaCpc9zgMp6vG5HYHXUcUGkrBOwzcxeALoDbwCT6thb3mQ9N2c1rVqkcYIeZBSRapRci4jEl87u3n//zepNCnAsMARYBTwDXAzUOGuJmU0kGFZCly5Nc6zylt2lTF+8gQuP7kZaikZXishX6a4gIhJfppnZCTG47hogegxEp0hZ1RjvFe5eDvwDGFrD+QC4+8Punu/u+Xl5+33OslH6x9w1lFU438nvFHYoItIIKbkWEYkvlwJvmNmuep6KbwpwYWTWkKOA7e6+DpgF5JhZVaZ8ArC4Ht6vUXJ3np29moGdWtK7XXbY4YhII6RhISIi8SX3YE4ys6eB0UCumRUAtwCpAO7+EDAVOA1YDhQBl0TqKszseuBfZmbAHOCRQ/wMjdaitTtYun4nvzqzIUfeiEhTouRaRCSORJLd84HD3f1/zawT0JYg6a3tvAn7qXfgqn3UTQcGHmTITcpzs1eTlpLEuIEdwg5FRBopDQsREYkjZnY/MAa4IFJUBDwUXkTxo7isgn/MW8vYfu1o2Tw17HBEpJFSz7WISHwZ6e5DzWwugLtvMbO0sIOKB9MXb2D7njI9yCgitVLPtYhIfCkzsyTAAcysNfU733XCem5OAR1zmjGyx0ENaxeRBKHkWkQkDphZ1TeRDwDPA3lmdivwLvB/oQUWJ9Zu28OMZYV8e1gnkpMs7HBEpBHTsBARkfgwExjq7k+Y2RzgJMCA77j7wnBDa/pe+KgAd/jOMA0JEZHaKbkWEYkPe7tT3X0RsCjEWOKKu/PC3DUM796Kzq2ahx2OiDRySq5FROJDnpldt69Kd7+nIYOJJ/MLtrOicDcTjz087FBEpAlQci0iEh+SgUyierClfrw4dw1pKUmcOqB92KGISBOg5FpEJD6sc/fbwg4i3pRVVPLyx2s5qU8bWjbT3NYisn+aLUREJD6oxzoG3l22ic27SzlzcMewQxGRJiKmybWZjTWzT8xsuZlNqqH+CjNbYGbzzOxdM+sbKR8eKZtnZh+b2VmxjFNEJA6cGHYA8eiFuWvIaZ7K6CPbhB2KiDQRMUuuzSyZYL7VU4G+wISq5DnKU+4+wN0HA3cCVQ/cLATyI+VjgT9GzeEqIiLVuPuWsGOINzuLy3h90Xq+NbA9aSn6oldE6iaWd4vhwHJ3X+HupcBkYHx0A3ffEXXYgsiKYu5e5O7lkfKMqnIREZGG8trC9ZSUV3LWEM1tLSJ1F8ve4I7A6qjjAmBE9UZmdhVwHZAGnBBVPgJ4FOgKXBCVbIuIiMTcP+atoWvr5gztkhN2KCLShIT+PZe7P+DuPYCfATdFlX/o7v2AbwA/N7OM6uea2UQzm21mswsLCxsuaBERiWvrtxfz3mebOXNwR8z0rKiI1F0sk+s1QOeo406Rsn2ZDJxZvdDdlwC7gP411D3s7vnunp+Xl3eI4YqIiARemrcGdzhziGYJEZEDE8vkehbQy8y6m1kacD4wJbqBmfWKOjwdWBYp7171AKOZdQV6AytjGKuIiMheL85dw5AuOXTPbRF2KCLSxMRszLW7l5vZ1cA0gpXDHnX3RWZ2GzDb3acAV5vZSUAZsBW4KHL6KGCSmZUBlcAP3X1TrGIVERGpsmTdDpau38lt4/uFHYqINEExnd7O3acCU6uV3Ry1/6N9nPdX4K+xjE1ERKQmUz5eS3KScbqWOxeRgxD6A40iIiKNhbvz8sdrGdUzl9aZ6WGHIyJNkJJrERGRiHmrt1GwdQ9nDOoQdigi0kQpuRYREYl4+eN1pCUncUq/tmGHIiJNlJJrERERoLLSeWXBWo4/Mo/sjNSwwxGRJkrJtYiICDBr5RY27CjRkBAROSRKrkVERICX56+lWWoyJ/VpE3YoItKEKbkWEZGEV15RydQF6zmxTxuap8V0lloRiXNKrkVEJOG999lmtuwu1ZAQETlkSq5FRAQAM3vUzDaa2cJ91JuZ3Wdmy81svpkNrVafbWYFZnZ/w0Rcf17+eC1Z6Skcf0Re2KGISBOn5FpERKo8Doytpf5UoFdkmwg8WK3+V8A7MYkshkrKK5i2aD0n92tLRmpy2OGISBOn5FpERABw93eALbU0GQ884YEPgBwzaw9gZsOAtsDrsY+0fs34dBM7iss1JERE6oWSaxERqauOwOqo4wKgo5klAXcD14cS1SF6ef5acpqnMqpnbtihiEgcUHItIiKH6ofAVHcv2F9DM5toZrPNbHZhYWEDhFa7PaUVTF+8gVP7tyc1WX8SReTQab4hERGpqzVA56jjTpGyo4FjzeyHQCaQZma73H1S9Qu4+8PAwwD5+fke+5Br9/anGykqreBbA9uHHYqIxAkl1yIiUldTgKvNbDIwAtju7uuA71U1MLOLgfyaEuvGaOqC9RzWPJUR3VuFHYqIxAkl1yIiAoCZPQ2MBnLNrAC4BUgFcPeHgKnAacByoAi4JJxI60dxWQVvLt3Itwa2J0VDQkSknii5FhERANx9wn7qHbhqP20eJ5jSr9F7d9kmdpWUc+oADQkRkfqj/6qLiEhCmrpwHS2bpTKyR+uwQxGROKLkWkREEk5peSXTF2/gpD5tNUuIiNQr3VFERCTh/OezTewsLue0Ae3CDkVE4oySaxERSTivLVhPZnoKo3pp4RgRqV9KrkVEJKGUVVQybfF6TurThvSU5LDDEZE4o+RaREQSyocrtrCtqEyzhIhITCi5FhGRhDJ14TqapyVz/BF5YYciInFIybWIiCSMikrn9UXrGdO7DRmpGhIiIvVPybWIiCSMWSu3sGlXKaf115AQEYkNJdciIpIwXl2wjozUJEYfqSEhIhIbSq5FRCQhVFY6ry5cz/FH5NEiPSXscEQkTim5FhGRhPDRqq1s3FnCaZolRERiSMm1iIgkhNcWrictOYkTercJOxQRiWNKrkVEJO65O68v3sDInq3JykgNOxwRiWNKrkVEJO59smEnq7YUcUrfdmGHIiJxTsm1iIjEvdcXbcAMTuqrISEiEltKrkVEJO69vng9Qzrn0CYrI+xQRCTOKbkWEZG4tmbbHhau2cEp/TQkRERiT8m1iIjEtemL1gPwTSXXItIAlFyLiEhce33xBnq1yaR7bouwQxGRBKDkWkRE4ta2olI+/HwLp/RrG3YoIpIglFyLiEjcenPpRioqXVPwiUiDUXItIiJxa9qi9bTLzmBAx5ZhhyIiCULJtYiIxKU9pRW8/WkhJ/dtS1KShR2OiCQIJdciIhKX3l2+ieKySo23FpEGpeRaRETi0uuL1pOVkcJRh7cOOxQRSSBKrkVEJO6UV1TyxpINnNi7DanJ+lMnIg1HdxwREcHMHjWzjWa2cB/1Zmb3mdlyM5tvZkMj5YPN7H0zWxQpP69hI6/ZnC+2srWoTKsyikiDU3ItIiIAjwNja6k/FegV2SYCD0bKi4AL3b1f5Px7zSwnhnHWyeuLN5CWksRxR+SFHYqIJJiUsAMQEZHwufs7ZtatlibjgSfc3YEPzCzHzNq7+6dR11hrZhuBPGBbTAOuhbvz+uL1jOqZS2a6/syJSMNSz7WIiNRFR2B11HFBpGwvMxsOpAGf7esiZjbRzGab2ezCwsKYBLp0/U5Wb9nDKX01S4iINLyYJtdmNtbMPomM0ZtUQ/0VZrbAzOaZ2btm1jdSfrKZzYnUzTGzE2IZp4iIHBozaw/8FbjE3Sv31c7dH3b3fHfPz8uLzZCNNxZvwAxO7KPkWkQaXsySazNLBh4gGKfXF5hQlTxHecrdB7j7YOBO4J5I+SbgDHcfAFxEcMMWEZHwrAE6Rx13ipRhZtnAK8CN7v5BCLF9xRtLNzKoUw55WelhhyIiCSiWPdfDgeXuvsLdS4HJBGP29nL3HVGHLQCPlM9197WR8kVAMzPTXVJEJDxTgAsjs4YcBWx393Vmlga8SDAe++/hhggbd/7/9u49to7yzOP49zk+vsSOE9uJE0Jsk0SYACkJDYHAcmmggCBtKVuggaJyESukClZ0QdvCtgIti1awlcql0HbZLS1su0C7wBYhWAgOlOUOgVxxQkwJG4fEB4fEJhc79jnP/jFjc0htcuHYc+ac30canZl3Xo+eJ5m8eTznnZkelm/YxulHTIo6FBEpUiN5p8dQ8/Pm79nJzK4CriWYpzfU9I/zgLfcvXckghQRETCzB4EFwEQzawduAkoB3P2XwJPAQqCN4Akhl4c/+m3gFGCCmV0Wtl3m7stGLfgsz61JAZoSIiLRifw2ane/B7jHzL4D/JhgGggAZjYLuA04c6ifNbMrCR4JRVNT08gHKyJSoNz9or3sd+CqIdp/C/x2pOLaX8+2pphaM4bDD6qOOhQRKVIjOS1k2Pl5w3gIOHdgw8waCL5qvMTdh7zzfDRujBERkXjo6Uvz4rpOTjt8EmYWdTgiUqRGsrh+A2g2s+nhnLwLCebsDTKz5qzNrwHrwvYagptjrnf3l0YwRhERKRCvvLeFXX1pvqr51iISoRErrt29H7gaeBpoBX7v7qvN7GYzOyfsdnX4ytxlBPOuB6aEXA0cCtwYPqZvmZlptBQRkWE929pBZVkJx8+YEHUoIlLERnTOtbs/SXATTHbbjVnr1wzzc7cAt4xkbCIiUjjcnSVrUpzcPJGK0pKowxGRIqY3NIqISOyt/rCbTV09ekqIiEROxbWIiMReS2sKMzjtcM0gFJFoqbgWEZHYa1nTwdGNNUwcq/eNiUi0VFyLiEisdXT3sKK9i9M1JURE8kBRF9evvLeFB1//P/rTmahDERGRA7Rk8K2MmhIiItEr6uL6v9/eyA2PruSM21/giRUfksl41CGJiMh+amntYGrNGGZO1lsZRSR6RV1c33reUdz73WMoLTGu/s+3+cbdL/L82hTBW35FRCTf9fSlebGtk9OP0FsZRSQ/FHVxbWacOesgnrrmFH767Tl07erjsl+/waJ7X+Wltk4V2SIiee6ltk56+jJ6BJ+I5I2iLq4HlCSMb81tYMl1C7j5m7NY37mDi//9Nc79+cs8s3qzpouIiOSpZ1tTVJWVMH9GXdShiIgAKq4/oyyZ4JITpvHCD07ln//6KLbu2M2V/7GUs+58gcfebmd3v258FBHJF8FbGTs45bB6ypN6K6OI5AcV10OoKC3hO/ObWHLdV7hj0dEA/N3DyznxtiXcvvhdUt09EUcoIiKrNnbT0d2rKSEikleSUQeQz5IlCc798lTOmXMwL6z7iPtfXs+dLev4+fNtLDxqCt89/hCOOaRWN9GIiETg2dYOzODUmfVRhyIiMkjF9T5IJIwFMyexYOYk3u/cwQOvrOe/3mznj8s+ZMbEKs47poFvzZ3KlPFjog5VRKRotKzpYG5TLRP0VkYRySOaFrKfpk+s4qZvzOLVf/gqPzl/NhOry/nJ02s58dYlXHLf6zz6Vjtdu/qiDlNEpKBt7uph1cZuvThGRPKOrlwfoKryJBfMa+SCeY18sGUHjyxt55G3NnLt75dTWmKc3FzPwqOmcMYRkxlfWRp1uCIiBaVlTQeAXnkuInlHxXUOHDKhimvPnMn3Tz+MZe3beHLF1sj1iQAADAxJREFUJp5atZkla1IkE8a8abXhtJJ6Zk6u1hxtEZEvqKU1RWPdGJonjY06FBGRz1BxnUOJhDG3qZa5TbX86GtHsKK9i6dWbeb5tSlufWoNtz61hoPGVfCVw+o5qXkix02vY/K4iqjDFhGJlV2707zU1slFxzXpYoWI5B0V1yPEzJjTWMOcxhquP/twNnf18Kd3Uzy/9iOeXLmJh9/cAMC0CZUcO62O46bXcey0Og6ZUKn/LEREPseLbZ309mc0JURE8pKK61Fy0PgKFh3bxKJjm+hPZ3hnUzevv/8xr73/MYtbO/jD0nYAxlUkmd1Qw5emjmd2w3iOmjqehtoxKrhFREItrR1Ulyc5brreyigi+UfFdQSSJQlmN9Qwu6GGvzl5BpmMsy61naUfbGXlxi5WbeziVy/+mb508Nr1cRVJmidX0zxpLIdOGju4PmV8hYpuESkqmYzTsibFKYfVU5bUA69EJP+ouM4DiYQx86BqZh5UPdjW259m7eZPWNHexdrNn7Au9QmL3+ngoTc2DPapKiuhsa4yWGoraaobQ2NdJU11lTTUVjKmTK8DFpHCsnJjFx990qtH8IlI3lJxnafKkyWDV7ezbdneS1tqO+tS22lLbad9604+2LKDF9d1sqsv/Zm+1RVJJo+rYPK4ciZXV1Affk4eV0FdVRk1laXUVgafFaUqxEUk/7WsSZEwWDBTxbWI5CcV1zEzYWw5E8aWM3/GhM+0uzud23ezYetONny8k/atu0h199DR3UvHJz289v7HpD7pGZxqsqcxpSXUVJZSU1lGbVh0V1ckqSxLMra8hKryJJXl4XpZkrFZ25VlScqTCcpLSyhPJkgmTNNVRGLIzO4Dvg6k3P1LQ+w34E5gIbATuMzd3wr3XQr8OOx6i7vfPxIxtrQGb2WsqyobicOLiHxhKq4LhJlRX11OfXU5c5tqh+zj7mzd2UdHdw9bd+xm684+tu7cTdeuvsHtbTt3s21XH62bu9ne08+O3n527E4PebzhJAzKkgnKk0GxHayH26UJykoSlJYkKEkYyYQFnyVGSSIozJOD20YysUe/RNAvYWAW5G0GCTMMBteDOLL2DfT9TDsYn+4bOGbic34xGOqXhuF6D3UYG6b30H33/bjD9d6/4+oXolw4uKaCWQePjzqMA/Ub4G7ggWH2nw00h8t84BfAfDOrA24C5gEOLDWzx919ay6D29S1i9UfdvPDsw7P5WFFRHJKxXURMTPqqsr2+4pPJuPs6ksPFto7egeK7n6296bZ2dvP7nSG3r4Mvf1pevsz7O7P0Nsfbvdl6N1j/66+NP0ZJ53J0J920hmnP+P0ZzKk0x7uy/7MkM74sFfeRfLFhcc2cut5s6MO44C4+wtmNu1zunwTeMDdHXjVzGrMbAqwAFjs7h8DmNli4CzgwVzGt2RNCoDTNd9aRPKYimvZq0TCqCpPUlWeH6dLOuO4OxkHx3EHd8i44zC4j6y2jA/0++z2p+3BsTJh21CGbt73vsP9WjB03/047jAHHuoYw/WV3KmpLI06hJE0FdiQtd0etg3XnlMXHNPIofXBU5NERPJVflRLIvuhJGEMP7lBRPKZmV0JXAnQ1NS0Xz9blkz8xf0mIiL5Rg8JFRGRfbURaMzabgjbhmv/C+5+r7vPc/d59fX1IxaoiEhUVFyLiMi+ehy4xALHA13uvgl4GjjTzGrNrBY4M2wTESk6mhYiIiIAmNmDBDcnTjSzdoIngJQCuPsvgScJHsPXRvAovsvDfR+b2T8Bb4SHunng5kYRkWKj4lpERABw94v2st+Bq4bZdx9w30jEJSISJ5oWIiIiIiKSIyquRURERERyRMW1iIiIiEiOqLgWEREREckRFdciIiIiIjmi4lpEREREJEcseLJS/JnZR8AHB/CjE4HOHIcTNeUUD4WYExRmXqOR0yHuXlSvLDzAcbsQzy8ozLyUUzwopwMz7JhdMMX1gTKzN919XtRx5JJyiodCzAkKM69CzCmuCvXvohDzUk7xoJxyT9NCRERERERyRMW1iIiIiEiOqLiGe6MOYAQop3goxJygMPMqxJziqlD/LgoxL+UUD8opx4p+zrWIiIiISK7oyrWIiIiISI4UdXFtZmeZ2VozazOz66OOZ1+Z2X1mljKzVVltdWa22MzWhZ+1YbuZ2V1hjivMbG50kQ/PzBrN7Dkze8fMVpvZNWF7bPMyswoze93Mloc5/WPYPt3MXgtjf9jMysL28nC7Ldw/Lcr4P4+ZlZjZ22b2RLgd65zMbL2ZrTSzZWb2ZtgW23OvUGnMzh8as+MzvoHG7NE+94q2uDazEuAe4GzgSOAiMzsy2qj22W+As/Zoux5ocfdmoCXchiC/5nC5EvjFKMW4v/qB69z9SOB44Krw7yPOefUCp7n7HOBo4CwzOx64Dbjd3Q8FtgJXhP2vALaG7beH/fLVNUBr1nYh5HSqux+d9fimOJ97BUdjdt7RmB2v8U1j9miee+5elAtwAvB01vYNwA1Rx7Uf8U8DVmVtrwWmhOtTgLXh+r8CFw3VL58X4I/AGYWSF1AJvAXMJ3iwfTJsHzwPgaeBE8L1ZNjPoo59iFwaCAau04AnACuAnNYDE/doK4hzr1AWjdnR57CX/DRm5+/4pjF7lM+9or1yDUwFNmRtt4dtcTXZ3TeF65uByeF67PIMv4b6MvAaMc8r/CpuGZACFgPvAdvcvT/skh33YE7h/i5gwuhGvE/uAH4AZMLtCcQ/JweeMbOlZnZl2Bbrc68AFdqfe8GcXxqz835805g9yudeciQPLtFwdzezWD4GxszGAo8A33f3bjMb3BfHvNw9DRxtZjXAY8DhEYf0hZjZ14GUuy81swVRx5NDJ7n7RjObBCw2szXZO+N47kl8xPn80pid3zRmR6OYr1xvBBqzthvCtrjqMLMpAOFnKmyPTZ5mVkowSP/O3R8Nm2OfF4C7bwOeI/j6rcbMBn6xzY57MKdw/3hgyyiHujcnAueY2XrgIYKvGe8k3jnh7hvDzxTBf6jHUSDnXgEptD/32J9fGrNjMb5pzI7g3Cvm4voNoDm8Y7YMuBB4POKYvojHgUvD9UsJ5r8NtF8S3i17PNCV9bVJ3rDgcsevgFZ3/2nWrtjmZWb14dUPzGwMwXzEVoIB+/yw2545DeR6PrDEwwli+cLdb3D3BnefRvBvZom7X0yMczKzKjOrHlgHzgRWEeNzr0BpzM4jGrOBGIxvGrOBKM69qCelR7kAC4F3CeZU/SjqePYj7geBTUAfwdyhKwjmRLUA64BngbqwrxHcYf8esBKYF3X8w+R0EsEcqhXAsnBZGOe8gNnA22FOq4Abw/YZwOtAG/AHoDxsrwi328L9M6LOYS/5LQCeiHtOYezLw2X1wFgQ53OvUBeN2fmzaMyOx/i2R34as0fp3NMbGkVEREREcqSYp4WIiIiIiOSUimsRERERkRxRcS0iIiIikiMqrkVEREREckTFtYiIiIhIjqi4lqJiZmkzW5a1XJ/DY08zs1W5Op6IiGjclvjR68+l2Oxy96OjDkJERPaZxm2JFV25FgHMbL2Z/YuZrTSz183s0LB9mpktMbMVZtZiZk1h+2Qze8zMlofLX4WHKjGzfzOz1Wb2TPiWLxERyTGN25KvVFxLsRmzx9eLi7L2dbn7UcDdwB1h28+A+919NvA74K6w/S7gT+4+B5hL8JYogGbgHnefBWwDzhvhfERECp3GbYkVvaFRioqZbXf3sUO0rwdOc/c/m1kpsNndJ5hZJzDF3fvC9k3uPtHMPgIa3L036xjTgMXu3hxu/xAodfdbRj4zEZHCpHFb4kZXrkU+5cOs74/erPU0uq9BRGQkadyWvKPiWuRTi7I+XwnXXwYuDNcvBv43XG8BvgdgZiVmNn60ghQRkUEatyXv6LczKTZjzGxZ1vb/uPvAY51qzWwFwVWMi8K2vwV+bWZ/D3wEXB62XwPca2ZXEFzp+B6wacSjFxEpPhq3JVY051qEwbl789y9M+pYRERk7zRuS77StBARERERkRzRlWsRERERkRzRlWsRERERkRxRcS0iIiIikiMqrkVEREREckTFtYiIiIhIjqi4FhERERHJERXXIiIiIiI58v8efQrof2x2DwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calibration_model_temperature.plot_training_history()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can take the GraphSAGE logits, scale them by `temperature` and then apply the `softmax` to obtain the calibrated probabilities for each class.\n",
    "\n",
    "**Note** that scaling the logits by `temperature` does not change the predictions so the model's accuracy will not change and there is no need to recalculate them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4930, 3)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions_calibrated_temperature = calibration_model_temperature.predict(\n",
    "    x=test_score_predictions\n",
    ")\n",
    "test_predictions_calibrated_temperature.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now plot the calibration curves and calculate the ECE for each class. We should expect the ECE to be lower after calibration. If not, then a different calibration method should be considered, e.g., Isotonic Regression as described later in this notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "calibration_data_after_temperature_scaling = []\n",
    "for i in range(test_predictions_calibrated_temperature.shape[1]):  # iterate over classes\n",
    "    calibration_data_after_temperature_scaling.append(\n",
    "        calibration_curve(\n",
    "            y_prob=test_predictions_calibrated_temperature[:, i],\n",
    "            y_true=test_targets[:, i],\n",
    "            n_bins=10,\n",
    "            normalize=True,\n",
    "        )\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "ece_after_scaling_temperature = []\n",
    "for i in range(test_predictions_calibrated_temperature.shape[1]):\n",
    "    (\n",
    "        fraction_of_positives,\n",
    "        mean_predicted_value,\n",
    "    ) = calibration_data_after_temperature_scaling[i]\n",
    "    ece_after_scaling_temperature.append(\n",
    "        expected_calibration_error(\n",
    "            prediction_probabilities=test_predictions_calibrated_temperature[:, i],\n",
    "            accuracy=fraction_of_positives,\n",
    "            confidence=mean_predicted_value,\n",
    "        )\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.007640713481013586, 0.008760529204888555, 0.011521251903406684]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ece_after_scaling_temperature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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+9pYjfdjT5yhI1dZa6fs3WmMOc83Td3PCmvthoMc09RUeQXAZrw9vk3Y4v24A+jQxP6mtjVUhBNOuxzkuKYUe899mmZmG/H+grT3l4p92uLtMU7Y/6xmvQo8ZozpgfNL2E6cvwA0dDmwxlpb/1cFY0wozl8zDsSN8wtO4xlmGrdv7/fXPcCXTZRTfZB6ROQYpfAtIseimThDF4qttSubOWYtTiDtb619/ABlhXs/1vcoe6eym+yDdvrSdJy5wcustWsOcNy3wN3GmG57h54YYyJweoibZa2tMMZ8jTOV48PW2spmDq3GGbrR8NxyY8xXwGDge2utp5lzc3HGfF8KvNxg+8Uc2v9XU3DGtt+BM/PJP6y17kbHhLP/UJarOcgsYNZaa4zZCgxotOucRu9X4VxLhrX2L4fQdhE5xil8i8gxxxu0muvx3nuMNcb8DPjIOPNkv4Mz9KADcAqQY639G84DgdnAH4wxe3s972zL9h+mN4BrgdnGmCdwZhwJxum5Px/4kXes9pPArcDn3mkE98520lyYbuhXwFycGUGewAnLPYAh1tqfe49ZBZxqjDkXp8c531q7BbgL54HNGcaYl3B64BOBYYDLWnuft/f798CLxph/A2/jPMh4H1Da0i+EtTbXGDMbuA1nXHlTwz6mA/80xvwVZ37wE7zHt6Set4F7vVMsLsQZv315ozZ4jDG3Af/x9qi/i9Mb3hHn+2uTtfapll6TiBw79MCliBy3rLWf4gSnCJyVHGcAf8YJSN96j6nBGd+9E2fIxNM4IfJAveV+Z62tBc4C/gXchDPl3xs40wn+D+8wGmttPnAmzi8ar+Jcz3T27Wluro6FOA9dbsWZdvFTnODecBz4/Th/VXgHJ5g+5D33e5yAWwD8A2cYyFPAQJyv5946XsLpsR6DM0XftTi/SDV8iLUlXsUJ3kustcub2P8c8BjOFIAf43ztzqFlK6E+6j3/FzhTCfbG6TXfh7V2Gs6DptE4zxXMwPm+ScZ56FJEjkPGWq2yKyIiIiLiD+r5FhERERHxE4VvERERERE/UfgWEREREfEThW8RERERET9R+BYRERER8ROFbxERERERP1H4FhERERHxE4VvERERERE/UfgWEREREfEThW8RERERET9R+BYRERER8ROFbxERERERP1H4FhERERHxE4VvERERERE/UfgWEREREfEThW8RERERET9R+BYRERER8ROFbxERERERP1H4FhERERHxE4VvERERERE/UfgWEREREfEThW8RERERET9R+BYRERER8ROFbxERERERP1H4FhERERHxE4VvERERERE/UfgWEREREfEThW8RERERET9R+BYRERER8ROFbxERERERP1H4FhERERHxE4VvERERERE/UfgWEREREfEThW8RERERET9R+BYRERER8ROFbxERERERP1H4FhERERHxE4VvEREREfn/9u4/SO66vuP488UvtZKqcIx1lHjYogWMU52osXbQiqUIrdTRWplSE2XKdEZbbZkOKbVNRm3FMorWsbZUKaHTokiZmhYoIBIpVqhBHYP4YzIkwSgWMBjTYpHgu3/sN8w15G53ub3v9273+ZjZ2d3v97N7r8wnd/e+z36+n49aYvEtSZIktcTiW5IkSWqJxbckSZLUEotvSZIkqSUW35IkSVJLLL4lSZKkllh8S5IkSS2x+JYkSZJaYvEtSZIktcTiW5IkSWqJxbckSZLUEotvSZIkqSUW35IkSVJLLL4lSZKkllh8S5IkSS05pOsAbZmamqrp6emuY0iSJGnM3XbbbfdV1VEHOjcxxff09DSbN2/uOoYkSZLGXJIds52bmOK7K9Nrr+o6Qme2n39a1xEkSZIWFed8S5IkSS1x5LslkzQKPMmj/ZIkSXNx5FuSJElqicW3JEmS1BKLb0mSJKklFt+SJElSSwYuvpOcmOTwWc4dnuTE0cWSJEmSxs8wI983AsfPcu45zXlJkiRJsxim+M4c5x4HPDzPLJIkSdJYm3Od7yTTwLNmHFp5gKknTwDeDNw10mSSJEnSmOm3yc5qYB1Qze1D/P8R8Gqe7wXeshABJUmSpHHRr/i+BNhEr8D+DL0C+4792jwIfLOqdo06nCRJkjRO5iy+q2oHsAMgyS8CX6yqPW0EkyRJksZNv5HvR1TVZxcyiCRJkjTuhlnn+7Ak65J8PckDSR7e77Z3IYNKkiRJS93AI9/ABfTmfF8DXElvrrckSZKkAQ1TfL8OWFdVf7ZQYSRJkqRxNswmO4cDn1+oIJIkSdK4G2bk+1+AE+ktOagBLTtuLQArNqztOEl7lh2379FpXcaQJEladIYpvj8EXJrkx8DVwKPW9a6qO0cVTJIkSRo3wxTf+6acrKe36+WBHDyvNGNsy7a7uo7QmhXHLO86giRJ0qI0TPH9ZnrbyUuSJEl6DIbZZOeS+X6xJEcDlwJPpVfIX1RVH0xyBPAJYBrYDry+qu5PEuCDwKnAA8Caqvpi816rgXc0b/3uqtow33wLav3urhO0Z8OKrhNIkiQtSsOsdjIKe4Fzqup4YBXwliTHA2uBG6rqWOCG5jnAq4Bjm9vZwEcAmmJ9HfBi4EXAuiRPafMfIkmSJA1r4JHvJBf3aVJVdVafBncDdzeP9yT5GvB04HTg5U2zDcAm4Nzm+KVVVcAtSZ6c5GlN2+uraleT7XrgFOCyQf89kiRJUtuGmfP9Ch495/sIYBnw/eY2sCTTwPOBW4GnNoU5wHfpTUuBXmH+rRkv29kcm+34/l/jbHoj5ixf7kWAkiRJ6tbA006qarqqjtnv9iR6o9DfBV476HslORz4J+DtVfWD/b5OMaILO6vqoqpaWVUrjzrqqFG8pSRJkvSYzXvOd1XdBFxIbx3wvpIcSq/w/oequrI5/F/NdBKa+3ua498Gjp7x8mc0x2Y7LkmSJC1ao7rg8k56U0jm1Kxe8jHga1X1/hmnNgKrm8ergU/NOP7G9KwCdjfTU64FTk7ylOZCy5ObY5IkSdKiNcyc7wNKcgiwht68635eCvwWsCXJl5tj5wHnA5cnOQvYAby+OXc1vWUGt9JbavBNAFW1K8m7gC807d657+JLSZIkabEaZrWTzxzg8GHAs4Ejgd/p9x5VdTOQWcT9OfsAAAk0SURBVE6fdID2Bbxllve6GOi3AoskSZK0aAwz8n0Qj74Qcg9wJfDxqto0qlCSJEnSOBpmh8uXL2AOSZIkaey1vcOlJEmSNLGGKr6TrEhyRZJ7k+xt7i9PsmKhAkqSJEnjYpgLLl8IfBb4Ib0lAL8L/BTwq8BpSU6sqtsWJKUkSZI0Boa54PI9wO3ASVW1Z9/BJMuATzfnTx5tPEmSJM3Xig2TOUlhy+otXUd4lGGmnawC3jOz8AZonr8XeMkog0mSJEnjZpiR7/2XGRz2vCRJkjq0GEeCF8JiHukfZuT7VuC8ZprJI5I8ETgXuGWUwSRJkqRxM8zI93nAJmBHkn8F7qZ3weWpwBOBl408nSRJkjRGhtlk5z+TrAL+FPhl4AhgF3Aj8K6qmozPMSRJkqTHaM7iO8lBwGnAtqq6vaq+ArxuvzYrgGnA4luSJEmaQ78532cClwH/M0ebPcBlSc4YWSpJkiRpDA1SfP9dVW2brUFVbQc+BqweYS5JkiRp7PQrvl8AXDfA+3waWDn/OJIkSdL46ld8LwPuH+B97m/aSpIkSZpFv9VO7gOeCdzcp93ypq0kSZIWqem1V3UdoRXLjus6wez6jXzfzGBzudfQv0CXJEmSJlq/ke8PADcnuRA4t6p+NPNkkkOBC4BXAL+wMBElSZI0CtvPP63rCK1YsWFt1xFmNWfxXVWfT3IO8D7gN5NcB+xoTj8T+CXgSOCcqnJ7eUmSJGkOfXe4rKoPJPkicC7wGuAJzakf0ttu/vyq+vcFS6ila/2Tuk7QvvW7u04gSZIWsYG2l6+qm4Cbmh0vp5rD36uqhxcsmSRJ0gJYsWFF1xE0wQYqvvepqh8D9yxQFo2bSRoFnsRRfkmSNLShim9JkqRxsWXbXV1H0ASy+NaCmaiP9Y5ZDsCWSRsBn6RPN6QxNVE/q/c3QT/D9q3vvb3bGGKJF99JTgE+CBwMfLSqzu84kibciqYInxiT/Etb0pI3KRvOaHFZssV3koOBD9Nb7nAn8IUkG6vqjm6TacvqLV1HaN1EjxxJGguTOAVjuusAmkhLtvgGXgRsrao7AZJ8HDgdsPhW6ybxD45J4wiZxt101wE6MCkbzmhxWcrF99OBb814vhN48cwGSc4Gzm6e/neSb7SUbX9TWZP7Ovraas8UYD+PN/t4MtjPk2Eq77Wfx1yX9dczZzuxlIvvvqrqIuCirnMk2VxVK7vOoYVlP48/+3gy2M+TwX4ef4u1jw/qOsA8fBs4esbzZzTHJEmSpEVpKRffXwCOTXJMksOANwAbO84kSZIkzWrJTjupqr1J3gpcS2+pwYur6qsdx5pN51Nf1Ar7efzZx5PBfp4M9vP4W5R9nKrqOoMkSZI0EZbytBNJkiRpSbH4liRJklpi8T1CSU5J8o0kW5OsPcD5xyX5RHP+1iTT7afUfAzQx3+Q5I4kX0lyQ5JZ1/nU4tWvn2e0e22SSrLolrJSf4P0c5LXN9/TX03yj21n1PwM8DN7eZIbk3yp+bl9ahc5NT9JLk5yT5LbZzmfJH/Z/D/4SpIXtJ1xJovvEZmx3f2rgOOBM5Icv1+zs4D7q+pngAuB97abUvMxYB9/CVhZVc8DrgD+ot2Umq8B+5kky4C3Abe2m1CjMEg/JzkW+CPgpVV1AvD21oPqMRvwe/kdwOVV9Xx6q6b9VbspNSKXAKfMcf5VwLHN7WzgIy1kmpXF9+g8st19Vf0I2Lfd/UynAxuax1cAJyVJixk1P337uKpurKoHmqe30Ft/XkvLIN/LAO+i9wf0/7YZTiMzSD//NvDhqrofoKruaTmj5meQPi7gJ5vHTwK+02I+jUhV3QTsmqPJ6cCl1XML8OQkT2sn3aNZfI/Ogba7f/psbapqL7AbOLKVdBqFQfp4prOAaxY0kRZC335uPrI8uqquajOYRmqQ7+dnA89O8rkktySZa2RNi88gfbweODPJTuBq4HfbiaaWDfv7e0Et2XW+pcUsyZnASuBlXWfRaCU5CHg/sKbjKFp4h9D7mPrl9D7FuinJiqr6fqepNEpnAJdU1fuSvAT4+yTPraofdx1M48uR79EZZLv7R9okOYTeR1zfayWdRmGQPibJK4E/Bl5dVQ+2lE2j06+flwHPBTYl2Q6sAjZ60eWSM8j3805gY1U9VFXbgG/SK8a1NAzSx2cBlwNU1eeBxwNTraRTmwb6/d0Wi+/RGWS7+43A6ubx64DPlLscLSV9+zjJ84G/oVd4Oz90aZqzn6tqd1VNVdV0VU3Tm9v/6qra3E1cPUaD/Mz+Z3qj3iSZojcN5c42Q2peBunju4CTAJIcR6/4vrfVlGrDRuCNzaonq4DdVXV3V2GcdjIis213n+SdwOaq2gh8jN5HWlvpXRjwhu4Sa1gD9vEFwOHAJ5trae+qqld3FlpDG7CftcQN2M/XAicnuQN4GPjDqvLTyiViwD4+B/jbJL9P7+LLNQ6KLT1JLqP3h/JUM39/HXAoQFX9Nb35/KcCW4EHgDd1k7TH7eUlSZKkljjtRJIkSWqJxbckSZLUEotvSZIkqSUW35IkSVJLLL4lSZKkllh8S9KESbImSc24PZzk20kuT/KcGe3WJ3FJLEkaIdf5lqTJ9ev0dnE8GPhp4E+AG5KcUFW7gY8C/9ZhPkkaOxbfkjS5vlxVW5vHn0vyHeB64OeBa6pqJ73iXJI0Ik47kSTt84Pm/lA48LSTZprKu5P8XpJtSfYk+WySE1pPK0lLkCPfkjS5Dk5yCL1pJ88C/hy4B9jU53VnAt8A3gYcBlwAfCrJz1bV3oWLK0lLn8W3JE2ur+/3/DvAr1TVDw7UeIaHmnYPASQB+CTwIuA/Rh1SksaJ004kaXK9BnghvaL514A7gKuTHNfnddfvK7wbW5r75aOPKEnjxZFvSZpct8+44JIk1wHfAtYDvzHH63bt9/zB5v7xI00nSWPIkW9JEgBV9UPgTuB5XWeRpHFl8S1JAiDJT9Bb7/verrNI0rhy2okkTa6fSzIFBHga8FbgCOBDnaaSpDFm8S1Jk+uTMx7fC9wOnFJV13aUR5LGXqqqfytJkiRJ8+acb0mSJKklFt+SJElSSyy+JUmSpJZYfEuSJEktsfiWJEmSWmLxLUmSJLXE4luSJElqicW3JEmS1JL/A0eL8HSCNhB2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_reliability_diagram(\n",
    "    calibration_data_after_temperature_scaling,\n",
    "    test_predictions_calibrated_temperature,\n",
    "    ece=ece_after_scaling_temperature,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Isotonic Regression\n",
    "\n",
    "We extend [Isotonic calibration](https://scikit-learn.org/stable/modules/generated/sklearn.isotonic.IsotonicRegression.html#sklearn.isotonic.IsotonicRegression) to the multi-class case by calibrating OVR models, one for each class. \n",
    "\n",
    "At test time, we calibrate the predictions for each class and then normalize the vector to unit norm so that the output of the calibration is a probability distribution."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note** that the input to the Isotonic Calibration model is the classifier's probabilistic outputs as compared to Temperature scaling where the input was the logits. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4930, 3)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_pred.shape  # Holds the probabilistic predictions for each query node"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5, 3697, 3)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(3697, 3)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The probabilistic predictions for the validation set\n",
    "val_predictions = predict(model, val_node_generator, n_predictions=n_predictions)\n",
    "val_predictions.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create the calibration object of type `IsotonicCalibration`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "isotonic_calib = IsotonicCalibration()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now call the `fit` method to train the calibration model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "isotonic_calib.fit(x_train=val_predictions, y_train=val_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4930, 3)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_pred_calibrated_isotonic = isotonic_calib.predict(test_pred)\n",
    "test_pred_calibrated_isotonic.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now plot the calibration curves and calculate the ECE for each class. We should expect the ECE to be lower after calibration. If not, then a different calibration method should be considered, e.g., Temperature Scaling as described earlier in this notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "calibration_data_after_isotonic_scaling = []\n",
    "for i in range(test_pred_calibrated_isotonic.shape[1]):  # iterate over classes\n",
    "    calibration_data_after_isotonic_scaling.append(\n",
    "        calibration_curve(\n",
    "            y_prob=test_pred_calibrated_isotonic[:, i],\n",
    "            y_true=test_targets[:, i],\n",
    "            n_bins=10,\n",
    "            normalize=True,\n",
    "        )\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "ece_after_scaling_isotonic = []\n",
    "for i in range(test_pred_calibrated_isotonic.shape[1]):\n",
    "    fraction_of_positives, mean_predicted_value = calibration_data_after_isotonic_scaling[\n",
    "        i\n",
    "    ]\n",
    "    ece_after_scaling_isotonic.append(\n",
    "        expected_calibration_error(\n",
    "            prediction_probabilities=test_pred_calibrated_isotonic[:, i],\n",
    "            accuracy=fraction_of_positives,\n",
    "            confidence=mean_predicted_value,\n",
    "        )\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.005778232702689336, 0.010598486548761062, 0.008741536139603547]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ece_after_scaling_isotonic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt8AAAGqCAYAAADTDSgrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3hUVfrA8e87k0x6DxB6aKErvQsogqioq1gR0bVgR8HFVSzY9YdYdl11V9dVsYF1ZRUREFGaSkCK9F4SCGmk15nz++NOwhBSyZBAeD/PMw8z95x7yp0B3jlz7jlijEEppZRSSil18tnquwFKKaWUUkqdKTT4VkoppZRSqo5o8K2UUkoppVQd0eBbKaWUUkqpOqLBt1JKKaWUUnVEg2+llFJKKaXqiAbfSqnjiIgRkfbu5/8Ukcfcz4eLyIGTXPf1IrLgZNZxqhKR50Xk/vpuh1LeICJNRGSziPjVd1uUOpVo8K1UAyUi40QkXkSyReSgiHwnIkNqWo4x5g5jzNMnqY2x7kDfx6O+j4wxo05SfaEi8qqI7HNfl53u19Eno74atq0RMAH4l/v1cBFxudvp+Rjocc4FIvKziGSJSLKI/CQil7rTbhIRZznnN6tlO2NF5EcRyRWRLSJyfiV5/UTkPyKSKSKHRGRKmfQR7jJy3WW29kh7T0QKy7Td7pF+tTuwyxKRTSLypxr0IVJEvhKRHBHZKyLjKskrIvJ/IpLqfvyfiIhH+lsistX9Xt1UzvmT3X3PdF8LvzLp94nIbndbNotIXDX7UOm1rUk7KntP3f1/RkQSRCRDRJaISFeP9I1l3qNiEfkfgDEmCfgRmFidPil1ptDgW6kGyP0f8avAc0AToBXwBnBZHbfDXnWuuiEiDuAHoCswGggFBgKpQL8TKM+n6lw1chMwzxiT53Es0RgTXOax0l3/lcBnwCygBdb7/Dhwicf5K8s5P7GW7fwE+B2IAh4BPnd/cSjPE0AHoDVwLvCgiIx2tz8a+BJ4DIgE4oE5Zc6fUabtTve5zYEPgSlY7+NU4GMRaVzNPrwOFGJds+uBNz0DyjImAn8CzgbOwrq+t3ukrwPuAtaUPVFELgAeAka4r0Fb4EmP9FuBW4CLgWBgDJBSzT48QQXXtqbtoPL39CrgZuAcrPdpJfBByYnGmK4l7w8QAuzH+lyW+Ihjr5dSyhijD33oowE9gDAgG7iqkjz9sP4TPQIcBP4BODzSDdDe/fw94Bn38+HAAWAaVpCwB7je47z3gDeBeUAOcD5WYPE7kIn1H/MTHvn3uevKdj8GYgWhyzzyDAJWARnuPwd5pC0BngaWA1nAAiC6gj7fCiQBwZVcl9J+V9L3vwKHsAKQzcAYj/w+QDLQy/16ALDCfZ3XAcMrqXsxMN7j9XDgQAV5xX3tplZS3jHX0UufrTigAAjxOLYUuKOC/InAKI/XTwOz3c8nAis80oKAPKBT2WtfTrn9gcNljiUDA6vRhyCswDvO49gHwAsV5F8BTPR4fQvwSzn5lgE3lTn2MfCcx+sRwCH3c5v778OIE3wvKry25eStrB2Vvqfuz/unHmldgfwK6hmG9fcwqMzfiVygtTc/i/rQx+n80JFvpRqegYA/8FUleZzAZCDanX8E1uhddcS4z2sO3Ai8JSIdPdLHAc9ijYItwwrCJwDhWIH4nR5TBIa6/ww3HqO6JUQkEvgW+DvWqNzLwLciElWmvj8DjQEH8JcK2n0+MN8Yk13NfpYnBmv0rzVW8PgJcJ1H+gVAijFmjXt09lvgGfc5fwG+qGSUuDuwtZrt6Ai0BD6vcQ/cROQbETlSweObCk7rCuwyxmR5HFvnPl62/AigqTu9vLxdPdOMMTnAzjJl3SUiaSKyWkTGehyPBzaLyKUiYnd/ngqA9dXoehxQbIzZVlUfymtnFXmrc24T9+e3hfvRTUT2u6eePCkiVf6/XI1rW5N2VPWezgbaiUiciPhi/Z2fX0E9NwJfuN9LAIwxxcAOrF8OlFLotBOlGqIorACwuKIMxpjVxphfjDHFxpg9WPOMh9WgjseMMQXGmJ+wAsyrPdK+NsYsN8a4jDH5xpglxpgN7tfrsQLW6tZ1MbDdGPOBu62fAFs4dmrFu8aYbcaarvEp0KOCsqKwRvlrwwVMd/c9D2tE8VIRCXSnj8PqH8B4rGkk89x9X4gVNF5UQdnhWKOGnpqVExgHuftCNfozoMy5O0sSjDFjjDHhFTzGVFBeMNYvEJ4ysL5olZe3JL28vFWV9XesaRWNsaamvCcig91td2JNt/kYK+j+GLjdM+irRDDWrzDV6UN57cwAgj3nfVdRV9lzcdfVwv18FNYXr3OxvsjdUs1yPcsreV6TPpS0o6r34SDWl+itWL9MXIX1xf0Y7r8DV2L9YlFWFtbnWymFBt9KNUSpQHRlc5Ldo1jflNyAhTU3vLo3HaaXCXL2Ap438e0vU1d/981cySKSAdxRg7qaucv3tBdr1L3EIY/nuRwNTMpKxRotrI1kY0x+yQtjzA6sqSeXuIOPS7ECQbBGx6/yDH6BIZW0IZ3jg6fEcgLjHHdfqEZ/filzbrvqd7Vc2VhzrD2FcvyXhpK8Jenl5a20LGPMGmNMqvtL1zysucNXALhvCJyBNTXHgfVl7t8iUtEXrxPtQ3n5Q4FsY4w5gbpKnmdhBbJgzWs/4vEluKIvZ2XL9Syv5HlN+lDSjqqux+NAX6xfWvyx5oov9vjCWeIKIA34qZz6Q7CmXiml0OBbqYZoJdZoYGWrP7yJNYLcwRgTijWHuzojeQAR7tHXEq2w5p+WKBuUfAzMBVoaY8KAf3rUVVUAk4gVxHpqBSRUs62eFgEXlGl7WbmAZ1ARUya9vPaWTD25DNjkDsjB+hLyQZngN8gY80IFda/HmhJRHVvd5Y+tKmNFxFr9puxKKCWP7yo4bSPQVkQ8vySc7T5+DGNMOtao6dkV5N3omeZ+X9qVV1ZJkRz93PQAfjbGxLt/VVgF/Io1tagq2wAfEelQVR/Ka2cVeatzbpIxJhXrPSzk2M9UdQL66lzbmrSjqve0BzDHGHPA/UXoPSAC6FKmjhuBWWW/lLgHAdpz7LQXpc5oGnwr1cAYYzKwRqteF5E/iUigiPiKyIUiMsOdLQTrp/dsEekE3FnDap4UEYeInIO1QsNnleQNAdKMMfki0g9rakaJZKypHG0rOHceECfWsok+InIN1n/6Fc1JrswHWAHrFyLSSURsIhIlItNEpGS0cS0wzj2PeDTVmx4zG2vqwJ0cHfUGazWOS8RaDtAuIv5iLR/YotxSrL5WazqOO8CZAjwmIn8WawlFm4gMEZG3qlnGheb4lVBKHhdWcM42rGs03d2fy7FWAPmigmpmAY+KSIT7c3YbR6clfIU133msiPhjfWbXG2O2gLWai4gEu/s1Cmsaz1z3uauAc0pGukWkJ9ZqHOvdr4eLSLmBrPuXgy+Bp0QkyD2V5TI8VvAopw9TRKS5WMs0PuDRB9x/D/yxvhj4uq+LzePcW0Ski4iEA4+WnGuMycVa3eVBEQlxfy4m4v5sy9FlOGNP4NqWl7eidlT1nq7C+gWnifu9uAHwxZrHXXINWmBNm3m/nLr7AXuMMWV/wVLqzHWy7+jUhz70UT8PrCXU4rFueDyENTd7kDttKNbIdzbWygZPcewKI1WtdvII1mon+4AbPM4rzetx7EqsqSJZWIHFP4APPdKfwgrCj2CtDnJTmbYMAVZjzUNdDQzxSFsC3Orx+phzy7kmYVhLMO53930n1k2cUe70PlgjfllYwdgnZfteQbk/AMVATJnj/bF+hk9z9/FboFUFZUS7r22AR30ujq4EU/IY63HOaPf7l+0ufwlwsce1cJZzft9afq5i3fXkYY3enl/mM7fR47Uf8B+sL3pJwJQyZZ2P9TnMc5cZ65G21P2eZ2KNml5b5tx7sALALGAX8IBH2g3A8kr6EAn8F+vvxj5gnEfaOVjTSkpeC9YUlzT3YwYgZT6DpsxjuEf6FHffM4F3AT+PtFCsL29ZWJ/Jx0vKdrdjD+BbQR8qvLZYvw5le37WqmhHZe+pP9bSjAfd564BRpdpy8PA0gra+TowyVv/rulDHw3hUfKXXCmlVD0TkeewltB7tb7bcjoTkX8Dnxljvq/vtpwoEXkU6x6Df9V3W06UWOuu/wT0NB73Sih1ptPgWymllFJKqTqic76VUkoppZSqIxp8K6WUUkopVUc0+FZKKaWUUqqOVLgJR0MTHR1tYmNj67sZSimllFKqgVu9enWKMaZReWlnTPAdGxtLfHx8fTdDKaWUUko1cCJS4dr2Ou1EKaWUUkqpOqLBt1JKKaWUUnVEg2+llFJKKaXqiAbfSimllFJK1RENvpVSSimllKojp2TwLSL/EZHDIvJHBekiIn8XkR0isl5EetV1G5VSSimllKqpUzL4Bt4DRleSfiHQwf2YCLxZB21SSimllFKqVk7J4NsY8zOQVkmWy4BZxvILEC4iTeumdUoppZRS6lS1cOdC+r7dlwcXPFjfTSnXKRl8V0NzYL/H6wPuY8cQkYkiEi8i8cnJyXXWOKWUUkopVXcW715c+nz0R6OJT4xn1vpZ9diiijXoHS6NMW8BbwH06dPH1HNzlFJKKaWUFzidTp5b9hxvrXmLhMwEDIYd9+6gXWQ7JvefTOvw1tzV5676bma5TtfgOwFo6fG6hfuYUkoppZRqwG786sZjRrV9bD50ie6C0+UEYOYFM+uradVyugbfc4F7RGQ20B/IMMYcrOc2KaWUUkqpGurzzEJSsgtZ5XcnjSTjmLQ0XPyfXXjTB67odAXvXf4ePZv2ZPbG2fRr1o8XR77IgJYD6qnlJ+aUDL5F5BNgOBAtIgeA6YAvgDHmn8A84CJgB5AL/Ll+WqqUUkoppWojJbsQoDTwzsfFZAqYSzGJGHABhbA5dTMA9w+4n/sH3F9fza21UzL4NsZcV0W6Ae6uo+YopZRSSqmTKJfVvEoB9+OHA3ibIgzQFRvjjS8T/5pIZEBkfTfTK07J4FsppZRSSjVMw+cMJzU/lYKiAjJzM8kMyySvMI+/2Ozc5fTFgY2lBNIXGz4lC/M1kMAbNPhWSimllFJ1wOl0UljsIjU/laT0JJIzrGWgAxwBNA5vTGhgKD4JhwAY2IBD1IbbM6WUUkopVa+yC7OZ/N0UPt34OZlF6dxMJ4j1ISQwBB+79afDx1Ga33babkFTfRp8K6WUUkopr1q0cwmXzh5DXnFO6bFwv0CWRRTiwIdAv0AC/QKrV1hQ45PUyvqhwbdSSimllKqV1Ymrmfz9A+TkC5cE3ExK0ocUufKJCAwlJCic4IBg4gJjGBI7kve2fFRxQU9kVJzWQGjwrZRSSimlamze9nlM++ER/ji8AaexNrgJdgTwVUAyrhiht6szg8I7ck7c5QyMHUFMUAxA5cH3GUCDb6WUUkopVS0fb/iYP3W8mq/Wb+LW78eSX5yPw8dBRFAEYQEh9PIJZWh0b4Z0v4FuLYfgYzs+1IzyjyI1P7Xc42cCDb6VUkoppVS5Cp2FPP3T0/z793c4nJOEy7jo0eh5ioOgReMWhDmdnG8PZ2jLcxjU+3bCG3Wpsswl1yw5+Q0/hWnwrZRSSimljmGM4bb/3cG7a/+Ny7gACPIPIiwghI5kc25uGMPaXUnHXrcg0e3rubWnFw2+lVJKKaXOcLvTd3Pf/Pv4ce8SGgU3Iyo4hmxXEsEBwTTxC+Qyl51RtggGdrqc4LOvgSZd67vJpy0NvpVSSimlzkAu42LIu0NYm7SW/MJ8DAa7zU6+8wj9cp2ck5dLX1sT2nYYi5x1JTTrBSL13ezTngbfSimllFJniI83fMzba9+md8v+LEtYwfrDaylyFhEVGMYgcfBAkZO+uf74dxuDdL8SWg0EW8Pf+KYueS34FpH2QJgxZrX7tT/wCNAN+N4Y809v1aWUUkoppapWUFTAk0uf5IMNH5Cck0xBUQGCkFyQTpf8QK60R3FDYRbRhUHYurgD7jbDwO5b301vsLw58v06sAFY7X79DHAfsAl4TUTEGPOmF+tTSimllFJl7M3cy/IDy1mVtIpP//iUxLREAPx8/Yj1i+Qupy9TDuxG7P5IpwuRbldC+/PB17+eW35m8GbwfTbwBoCICHAj8JAx5iUReRK4HdDgWymllFLKi/KL8/lx3488t+w5NiZvJCsvi2aRzYgKbE14cTtCfIp42unHVYWZuGyCtB+GdL8K4kaDX3B9N/+M483gOxwoWTG9JxAJfOZ+vRiY7MW6lFJKKaXOSMYYdmfsZlnCMhbsWcA3m78hKzcLl3EhCH4+/nRKDuENSaedax9GbNBmIHS7ElvnMRAQUd9dOKN5M/g+DLQDlgEjgV3GmH3utCDA6cW6lFJKKaXOGFmFWfx68Fc+3/I583fMp9BVSFRoFBE+zcnNz8VX/Old3JSZ9kAGFu0F9mNaDIDuk5Aul0Fw4/rugnLzZvA9F3hORDoDtwBve6R1A3Z5sS6llFJKqQbLZVxsTt3MsoRlfLn1S9YnrSczJ5PcglwA7DYfYpIfY6hzK39zHKGH2YLYkjExZ0O3W6Hr5Uh4y3ruhSqPN4Pvh7FGuC8DvgOe9Ui7AvjBi3UppZRSSjUoKXkprEhcwbL9y5i/ez4ucSEiJKQkkJ6djk1sOFxRDHd25mmH0Mf2CDabE6I6Qvdp0PUK3W3yNOC14NsYkwX8uYK0Ad6qRymllFLqdDF8znBS81OPOx7lH8XCKxeyNnktt332IQW+myiUXWTmZpKRm0FRcRExjvPoE/YXUlMXcrFsZ1pgIf3NauyyHkJbQ7f7oNtYa7dJ3fzmtOH1TXZEJALoD0QB84wx6SLia4wp8nZdSimllFKnsvIC75LjQ2YPIbc4lzy/AvYk7cLpct8eZ+z4u9ozKKsd95o3Gez/G76uPPCLgd63WQF3894acJ+mvBp8i8jzwP2AH2CAvkA68K2I/GyMecab9SmllFJKnU6cLifZedlk5mbS1Aj/MH50zstlsHFxEb48iB+NjR+Fkk2YYw7YI6H7tVC626S9vrugasmbO1z+FWs5weeAhcByj+T/AeOwNt5RSimllGqwknKSWJqwlJ8P/Fx67Ej2ETJyMsjOy8ZgsNvsxDhhBC5A2E3I0QKkiHnOAcx1DuL9x6bqbpMNjDdHvicCTxtjnhWRsl/LtgN6B4BSSimlGhyny8mGlA38fOBnlh5Yypb0LRQWFZKTl09EaCgAmbmZ5BfmExkSSWhQKIF+gfy4Z3+FZT5QdKf1RAPvBsebwXcLYEUFaYWAbqGklFJKqQYhoyCDFYkr+GHvEpYnLCer6AgFhYWkZWWQkZuG01UMQFBgHA4fB82jm2MTG6LztM943gy+E4GuwI/lpHUH9nixLqWUUkqpOmOMYWvaNr7csoilCUtJyNuMyzhxFvtjcrtwKDuejKLtAAg22oTHMX3oo7y77R1S81Oxl5mrHWVzVFlndHDVedTpx5vB9+fA4yKyCoh3HzMi0g74C/COF+tSSimllDqpdqem8+Xmn1iWsJQ9ufEU29JwGRcZmcWk5xwitzCT5oGdmP2nlymyb+OhxZN5fsTznNfmPHAWw46F3OhqCnvWg3FCm6HQ60boNAZ8/eGJsArr3vPCxXXYU1WXvBl8PwEMxpp6stN9bDbQClgFPO/FupRSSimlvCanoJgNCRn8vGsbyxKXsjcvHqdjO2IrxrgcBBZ3YGvyavKKckrPCfAJYEznYQzpEA1E82vbXyF9Lyx+Bn7/CLISIagxDJ4EPW+AqHbHVhrUGHIOH9+YIN0KviHz5iY7OSIyFLgBuAA4AKQCM4BZus63UkoppU4FLpdhR3I2a/cdYfW+FH47uIbEwt+xB23B7p8EgPgEkZWVTUFRLtvv2UGIXwD+z/gT5hfGRe0v4uXRLxMTHGMVWFwIW+fBmvdhp3v2bfvz4aIZEDe64psmp26vg96qU41X1/k2xhQD77ofJ0xERgN/A+zAv40xL5RJbwW8D4S78zxkjJlXmzqVUkop1TAlZxWwdv8R1u5PZ+3+I6xLSCDfsRGf4K34Bm2DkHz8sBNub8z+9BwOHNlPsfuGSQARa/Ob/Efzjy04ZYcVcK/9GHJTILQFDPsr9BwP4S3rsovqNOLNdb4/wwqIvzPGOGtRjh14HRiJNXq+SkTmGmM2eWR7FPjUGPOmiHQB5gGxJ9x4pZRSSjUI+UVONiZm8vu+dHfAfYQD6bnY/BPxDdlCcPh2JHYvARjCfCMI82nMdV2v408d/kTPf/ZkT/puBKF1WGvu6nsXDwx4ALvd42bJojzYNNcKuvcuB5uPNbrd+yZod55ugqOq5M2R77OAuUCKiMwGPjDGrDqBcvoBO4wxuwDcZV0GeAbfBgh1Pw/DWmlFKaWUUmcQYwx7UnNZuz+d3/dZgfbmg5kUOQ3YCmjUaC9hTXcQ03wDOc50ANpFdiY7twXx++P5I+cPAGxOG+O7juedS9/hQNYBxnUfd3xlSRth9fuwfjbkZ0BEGxgxHXpcDyFN6rLb6jTnzTnfHUWkP9ac72uBu0VkOzAL+NAYs6+aRTUHPFedPwD0L5PnCWCBiNwLBAHnl1eQiEzE2vyHVq1aVbN6pZRSSp2KjuQWlo5mlzyO5Fq3lAU67HRsmc/gXjvJlPXsydlAvqsIH59gBjcbxNAWQ3EWOhn72djS8hw2B72b9uaRIY8AMDR26LEVFmTDxi+toDshHuwO6HyJtWJJ7Dlgs9VZ31XDIcYY7xcq4gNcBIwHxgAOYKkx5txqnHslMNoYc6v79Q1Af2PMPR55prjb/pKIDMRaxrCbMcZVUbl9+vQx8fHxFSUrpZRSqo71eWYhKdmFxx2PDnaw8uERbDmYxe/701m77wiLcu/C2LKOy+tvC2ZEy4vYkPYr+7L2AtA2rC1dIrqwbPcyViesJtA3kJQHU3A6nTR+qTH9mvXj5QtepnOjzsc3yhhIXGMF3H98AYXZ0KiTFXCffS0ERnr9OqiGR0RWG2P6lJfm1RsuS7hvvJwLzBWRkcB/gKGVn1UqAfC8S6GF+5inW4DR7rpWiog/EA2Us16PUkoppU5F5QXeJce7Tf+egmJrTC062A/T8vjAGyDflc3C/f+lb9O+XN95HO/Gv8v8DfOZ65pbmifMz1pP2263k/pgavmNyTsCGz6zgu6kDeATAN2usILulv1Ad6ZUXnJSgm8RaY016j0eiMMKiv9WzdNXAR1EpA1W0H0tUHby1T5gBPCeiHQG/IFkLzRdKaWUUnWgoLjytRmu7hdF4+h07P6HOJy/my8qWJWvsKgQKRJeGfoKAY4AJv1vEoWuQpoENWFc93E8e+6zBDgCyj/ZGNi30gq4N/0XivMh5iy4+CXofhX4V7wJjlInypurnYQCV2PN+R4MFABfA5OBBZVNCfFkjCkWkXuA77GWEfyPMWajiDwFxBtj5gIPAG+LyGSsmy9vMidj/oxSSimlvCYjr4glWw+zYFMSP20tGTNzYnOkYPM/hM3vIHa/Q9j8D/Lf9Ayw7pEsHbkG6ybL/MJ8MnMzyczNpKCoAIAZK2Ywffh01t2+jpjgmGNXKCkrJwXWfQJrZkHKNnCEQI9x1ih3sx4nqfdKWbw251tE8gBf4Gesmyy/MMaU/xtRPdA530oppVTdSzySx6LNSSzclMTKPXsxvomEhCbTtFE6e7N3YnMcRmzWmtrG2HAVNMZVEMOD551LXEQccRFxBNuD6fNxH+w2O9l52exJ2gNAoF8goYGhvHruq1zT/ZrKG+Jywe6frCUCN38DriJo0Q963whdLwdH0Em+EupMUldzvp8EPjLG7K8yp1JKKaUaJGMMfxxM5fN1a/h573oSc3dh8zuEb+AhAtpbY3JOoMC3EaY4gqKc9jjzm+IqiMFV0IiS0OSi2N7cP/9+vtv+HZmFmUSHRRMTEUOgfyDNo5oTEhiCj93KW2ngnXkQ1n4Iaz6AI3shIAL63Qa9JkDjcm64VOok8+ZSgy9UnUsppZRSDYUxhqTcJDanbmXJ7nXEJ27iQO4unPYkRFwQAAGBDmJD2tK98YjSkewOER2I9I+scLWT/QFX0/Sl3NLXgb6BRARGAGATGxEhEaVpUf5RxzfMWQw7Flmj3Nu+B+O0lgYc8Th0GgO+/t6/GEpVU62CbxEZB8w3xqS5n1fKGPNxbepTSinVcAyfM5zU/ONXnojyj2LJNUvqvkGqUrlFuew8spNt6dvYlr6NLWlb2Zy6jTzn0RmmpiiCcJ9WdI0eyoi2Z9OneVdahbTCx1Z+uBH/6EgW7lzII4sfYXvadtL/ak3yjprhj8s4uDTuUmaOnEmj4EbVa+SRfdYI9+8fQlYiBDWGQfdao9xR7Wp9DZTyhtqOfH8IDAB+cz+vjAE0+FZKKQVQbuBd2XFVN1zGRUJ2QmmQvT19O9vSt7Evcx8G6z4xG/4U5zWhOL8LDmdzejftzCVd+nBB51iC/aoOLb7a/BXTfpjGtrRtuDzWY/jj8B90a9yt4uUAy1NcCFvnWTdP7lxsHWt/Plw0w9r23e5bo/4rdbLVNvjuwNHdKDvUsiyllFIKgK+2f0WAbwAB9gACfALw9/E/5s8AnwD87f7YbZWsaKGqlFmYWRpclzx2pO8gt9ia8iEIzYJaEmBaEFV0NgeSwijOb0pMYAwXdG3GyC5N6NcmEl975Ts9Op1Onl/+POfGnsvgVoN59ZdX2ZK6BUFoE96GSf0ncW/feytfoaSslB3WtJJ1n0BOMoS2gGF/hZ7jIbxl1ecrVU9Oyg6XpyJd7UQppU4t3d/vXusyHDYHAb5WIF4SlJcXrFeV7hnQlxwP9AnEx+aDnIKbq9R0yk6xq5h9mfuOCbK3pW/jYM7B0jyhjlA6RnakQ3gHAmnJweQI4rf7siPJ2r69c9NQRnZpwqguTejaLLTK65JdmM1Dix5izh9zSMlLAaB74+6sv3M921K2sS5pHVd1vapmHS/Kg83/s9bl3rsMxA4dL7SWCGw/AvTLmDpF1MlqJyJSCAw2xqwqJ60X8IsxxuGt+pRSSjVc88fOJ784n7zivNJHyevS487yj+cX55NdmE1yXjJ5RXnkO4+W46relhOl7GIvP1gvM4zON6AAACAASURBVCJfbiBfjcDf3+5/QsF9ZVN20vLTrOA67WiQvfPITgpd1o2NPuJDbFgsPRv35JqIa4iLiKNNaHt2HrSzcHMSX68+zKHMfOw2oW9sCOPGxDCySxNaRgZW2S6n04ndbmdfxj5av9q69LjD7qBvs77MHDkTgLjoOOKi46rf4aSNVsC9fg7kH4GINjBiurU2d0hM9ctR6hTgzaUGfYCK/gXxASr/TUoppdQZwRjDv9b/q9I8zYObn5R6i1xFxwfzznzyiioO5kvzu/OVBPOZuZnHfTkoCXBrorxR9wpH5d2j/JUZNmdY6fPogGjiIuIY13lc6UojbcLa4LA7yMwvYsnWZD5dmsSSLevJKigmwNfOsLhGjOzShPM6NSYiqOoxs/VJ65ny/RSW719ubYDzaD6twloRGx5Lt8bdePWCV2kXeQI3OxZkw8YvraA7IR7sDuh8iTXKHXsO2DSsUKcnb28vf9wcFhHxA0YBegeNUkqd4VzGxYurXuTDzR/iZ/ejwFlwXJ5yl47zAhHBYXfgsDuO2THRm4pdxRQ4C6yA/AQCes9APj0/nYPFB4/mc6dVZWqfqcRFxtEhvANRAcdey0MZ+cxZdZAFGw/xy65UipyG6GAHF3VvyqiuTRjcPhp/3+pN3Rg7Zyxzt82l2FVceiwqIKp09Hv3fbtrdvHA2u49cY118+SGz6EwG6I7wgXPwVnXQtDJ+WwoVZdqu9TgdOBx90sD/FLJz2eVD3MopZRq0IpcRTyx4gnm7pzL+M7jmdp3KjZpWKOXPjYffGw+BPkGQYD3yzfGkO/Mp99H/SrMM6HrhGPyb0vKZuGmQyzclMS6AxkAtIkO4ubBbRjZpQk9W0Vgt1U99eWdNe/w4ooX+eqar+jcqDN/HP6DYlcxTYObcmOPG3ly+JM47NWYXfpiB8g5fPxxR7A1nSRpA/gEQLcrrFHulv3gFJx3r9SJqu3I98/Ac1jTTaYB7wEJZfIUAJuAr2tZl1JKqdNUfnE+U3+aypIDS7inxz1MPGviKXkj46lORAjwqTyqd7oMq/ems2DjIRZuTmJvqrVySY+W4Uy9oCMXdG1Cu0bBVV5/p9PJM0uf4e01b5OYlVi6zOBzS5/jgys+YPXtqwmwB9RshRIoP/AGa5RbBC5+CbpfBf4n59cJpepbrYJvY8yPwI8AImKAN40xid5omFJKqYYhqzCLSYsnsTppNY/0f4RrO11b30067UX5R5V706WDMPo+u4i0nEIcdhsD20UxcWhbzu/chCahVe/qmF2YzabDm+jXoh9vrn6TJ356ArBG9Ls26sr0YdO5vPPlAAQ7gmvW6PxMOLi28jx3LK1ZmUqdhry5vfxj3ipLKaVUw5Cal8qdi+5ke/p2XjjnBS5qe1F9N6lBWHLNEtJyCvlhcxILNyXx8/Zk8otchPj7cF6naEZ1iWFoXDQh/lVvMJOQkcB939/Hgp0LyCrMItg3mKxpWdzZ+06+3fYtTw5/kn4tKp7mUq6iPDi4HhJ/t+ZwJ/4OKdsp59Ywpc44tZ3z/RbwnDFmj/t5ZYwx5vba1KeUUur0cTD7IBMXTuRQziH+ft7fOafFOfXdpNPevtRcFmw6xIJNScTvScNloGmYP1f3acmoLjH0axOJw6f68+gbzWhUugY3QLBvMJd2vBQAu93Od+O/q7qQ4kI4vNEKsBPWQOJaOLwJjNNKD2kKzXpB96uheU/4cGyN+qxUQ1Pbke8Lgdfdzy+i8q+0+nVXKaXOELuO7GLiwonkFuXy1qi36Nm4Z3036bRkjGFDQgYLNyWxYGMSW5OyAOgUE8I957ZnZJcYujWvesMbgHnb5/HYj4+xKXkTaVPTCHAEEO4fjsu4uKLzFcwcOZOwgCrmWbuckLLNHWS7R7QP/QElq9YEREKzntBxtBVwN+sJoU1rexmUalBqO+e7pcfzFrVvjlJKqdPdxpSN3LHoDuxi593R79IxsmN9N+mU1OeZhaRkH78ueHSwg1eu6cGCjUks2pzEwYx8bAJ9YyN59OLOjOoSQ6uoqje8Afhm2zdM+X4KO9N3HrPB0Lwd8xjbZSzbJ22v+GRjIG2Xe+qIe1T74DooyrHSHSHQrAf0v90Kspv3gvDWVa9MEtS4/JsugxpXq09Kne68vc63UkqpM9ivB39l0uJJRPhH8NbIt2gV2qq+m3TKKi/wLjl+wzu/4e9rY1hcIx4Y1ZHzOjUmshob3jidTp76+Sm6RHfhmu7X8PWWr9meth2b2Ggf0Z4pA6ZwZ787jz/RGMhMcI9oe8zTzreWJsTHH2LOgp7jrSC7WS+Ian9iG91MrSTgV+oM4M3t5QcAEcaY79yvI4C/A92A74FpxtRwX1+llFKnjR/2/cDUn6bSOrQ1/xr5LxoH6khmRYqdlf93+O8JfRjSoXob3mTkZTB10VS+2PwFaXlpAMQExXBN92uYOXIml3W6jDFxY449KTv5aJBdEnCXjEbbfKBJV+h6+dGpI407g73qmzeVUlXz5sj3DKxlB0vuzngRuMx9bBKQBTzrxfqUUkqdIr7a/hVPrHyCbtHdeGPEGydtB8nTlTGGHYezWbYjheU7Uvl1V+WbPp/fpUml6SW7SBY6CwmfEV563M/ux4AWA3hp1EsAhAWEMablENi1xGOe9lrI2O8+Q6BRR2h/vntEuyc06Qa+VS9LqJQ6Md4MvjtjBeCIiC9wFTDZGPOOiEwGJqLBt1JKNTjvb3yfmfEzGdRsEK8Mf4VA3+rNR27oDmbksXxHKst3pLB8RwqHs6ybEltHBTLm7GZ88tu+GpW3OnE1U76fwq8Jv1LkKsL5uBOH3UHvpr1pHdaaV0a/QquAKGuJv72/wMo3rYA7befRQiLaWDtG9r/dGtVuejb41XC9bqVUrXgz+A4G3JPD6Ot+/T/369WATvxTSqkGxBjDa7+/xtsb3mZU61E8f87z1dtevIHKyC1i5a5UVuxMYdmOFHYlWzcmRgU5GNQ+msHtohjcPpqWkdaXk+oG3zd8eQOzN86m2FVceiwqIIq0rINEZiYS3+N2azT7o2sgeQuUzPAMbW6NZPcYZ41qN+0BgZHe7bRSqsa8GXwnAt2BpVhLEG40xpTczhwO5HmxLqWUUvXI6XLy7K/P8tm2z7gy7koe7f8odlsNtxk/zeUXOVmzN92aSrIzlQ0HjuAyEOiw069NJOP6tWJw+2g6NgnBZjt+BZDoYEe5N126Ar6nw9/vZ8bIGVze+XISsxIpdhUTG9iYu1oMYkpgK+yH1sIr3cFVZJ0UGGWNZHe+5Og87ZDKp64opeqHN4Pv2cDzIjIUuAR4yiOtF6C3NyulVANQ5Czi4WUP8/2e77m1+61M6jmpWutMn+6cLsPGxIzSqSSr9qRRUOzCbhN6tgznnvM6MKR9ND1ahldro5v4R0cCUOgs5MklT/Lu2nc5mH3QSkyH9xc/zuV7fmV+Ifjam0BOHmxdDH6h1hJ/A+8+usRfWMuql/hTSp0SvBl8Pw4UAgOAl4CXPdJ6A194sS6llFL1ILcol8lLJrMicQUP9H6Am7rdVN9NOmmMMexJzbVGtrensHJXKhl51khzxyYhXN+/NUM6RNGvTRTBfuX8d/pihwrXs864J57lB5ZzUfsL+X3bdzy37DkAQhFG4eBBY6dv8j5Ifw/fpmdDnz9bgXazXhDZ9sSW+FNKnRK8FnwbY5zAkxWkXeKtepRSStWPjIIM7v7hbjakbOCpQU9xeYfL67tJXnc4K58VHjdJJmbkA9AszJ8LujZhcPtoBraLonFINVYDKRN4H8bFTAr5PGcnu2eEE4KQGdCG/rkpPI0f48Sftk17HA2ym/eC6I5g1y05lGpIvP43WkQ6AcOASCAN+MkYs8Xb9SillKo7ybnJTFw4kb2Ze3lp2Euc3/r8+m6SV2QXFPPrrlT3EoApbEvKBiAswJdB7aK469xoBrePJjYqsFZTawaTzQpcICAG2hlhrH80xI2G5j15tFkva21tHz9vdU0pdYry5iY7PsC/gRsAz3+hjIjMAm51j44rpZQ6jezP3M9tC28jPT+dN85/gwFNB9R3k05YYbGL3/els3ynNbq9dv8RnC6Dn4+Nfm0iubxnC4a0j6ZLs1Ds5dwkWXnhObD/NxaufoeXd/yP38jkd4JphY04bGQDNxpf7sIX/2mHwBF0UvqolDq1eXPk+zHgeqwbLT8EDgExwHjgEWAPFUxLUUopdWramraVOxbdQbGrmHcueIdu0d3qu0k14nIZthzKYvkOa/m/33ankVfkxCbQvUU4dwxry+B20fRqHVGt3SSPkZsG+1bC3hXEb5vHX9M2sNI4yXPH7H7AKpy0wsa7lFn7XANvpc5Y3gy+JwDPGmM8A+ydwJNi/VZ3Ixp8K6XUaeP3w79z9w93E+ATwPuj36dteNv6blK17E/LLZ1GsmJnKmk51nJ+bRsFcVWfFgxuH82AtlGEBdRwu/SMA7B3JexbQdHuZbybuoFIbFxpD2JvaBMW48RXhE4R7fjLkIe4Ze6Uk9A7pdTpzpvBdzNgWQVpy4CHvViXUkqpk2hZwjIm/ziZJkFNeGvkWzQLblbfTapQWk4hK3amuG+STGVfWi4AjUP8GB7XyNrgpn0UTcMCql+oMZC6A/YuLw24s4/s4TWKmCVFbMWFEYjwCeDKB/cz1tefH3Yv5rw25x0t44cXKlztRCl15vJm8H0QGAgsKidtANYmPNUiIqOBvwF24N/GmBfKyXM18ARggHXGmHEn0GallFJlfLf7O6YtnUb7iPb88/x/EhUQVd9NOkZuYTG/7U5jxc5Ulm1PYdPBTABC/Hzo3zaKmwfHMqRDNO0aBVf/JkmXEw5tgL0rYN8K2PcL5CSTjwv/wMbQehCRGRspwgDg7+PP4JaDefmCl8HXWvnkmMAbYKpub6GUOp43g++PgUdFpBj4CCsYjwGuBR4FZlanEBGxA68DI4EDwCoRmWuM2eSRpwPWSPpgY0y6iOgwglJKecGcLXN49tdn6dWkF6+d9xohjpA6qbfPMwvL3e0xOtjBLw+PYN2BjNLl/9bsS6fIaXDYbfRqHc4DI+MY3CGas5qH4WOv5vrXRfmQuOboyPb+36AwC4A/gqOZTi4LbLlkm2Ky7ksk2C+EkR+lEewI5uVRL9M8rLk3u6+UOoN4M/ieDrQHngWe8TguwGdYo9TV0Q/YYYzZBSAis4HLgE0eeW4DXjfGpAN4bGOvlFLqBBhjeHvD27z2+2sMazGMmcNm4u9TjbWsvaS8wLvkeI+nFpJdUIwIdGkays2D2zC4fTR9YyMJcFTzJsn8TCvA3rfCGt1OWA1Od52NOsNZV/FQ2mZe2rOI4pzM0tOiA6PZk7GXbo278e3139a2m0op5dVNdoqAq0WkB3AOx67zvb4GRTUH9nu8PgD0L5MnDkBElmNNTXnCGDO/bEEiMhGYCNCqVasaNEEppc4cLuNiZvxMPtj0AWPajuGpwU/ha6vhzYgn0SVnN2OIe3ObyCBH9U7KTnYH2iut0e2kP8C4QOzQrAfOPrfyTmEaM3Z/zy1nXcbD5zxM5rd34dztomVoSyb2nsjDgx/Gbq/hCihKKVUFMcZ4pyCRcCDHHYTXppwrgdHGmFvdr28A+htj7vHI8w1QBFwNtAB+BrobY45UVG6fPn1MfHx8bZqmlFINTrGrmOkrpjN351yu73w9D/Z9EJvU/dblsQ9VPKq854WLKz/ZGDiyt/TGSPausG6WBPAJgBZ9oPUgClv05bEd83h/4yck5SSVnt69cXfW37kep9OpwbZSyitEZLUxpk95abUa+RYRGzANuB+IAIpE5GtgojEm4wSLTQBaerxu4T7m6QDwqzvQ3y0i24AOwKoTrFMppc44Bc4Cpv40lR/3/8jdPe7m9rNur9UujifqcFZ+zU5wuSB5i8fI9grIct/T7x8GrQZCzxug9WDSIlryzY4FTOgxgey8NGZ8PAoAX5svPWJ68Ox5zzKy3UgADbyVUnWittNObsfaVGcZVuDbFrgSyAZuOcEyVwEdRKQNVtB9LVB2JZP/AtcB74pINNY0lF0nWJ9SSp1xsguzmfTjJFYdWsW0/tO4rtN19dKOjYkZ3PZ+Fb9KOovg4Dr3SiQrrUdeupUW0tQKtlsPsv5s3IVtaTuY/P1klvz8CLlF1rKDE3pMIDIgkqkDpzKhxwS6NT69NgtSSjUctQ2+JwL/KZkiAiAidwF/E5E7TmQKijGmWETuAb7Hms/9H2PMRhF5Cog3xsx1p40SkU2AE5hqjEmtZV+UUuqMkJafxp2L7mRb2jZeOOcFLm5bxbSOk6Tg+XZ0LUhhBYDHvZ3JJpRJRffST7YwyLENXrgV3EE0ke2g08XQahC0HggRbcBjtD7utTi2px1d4i/UL5SL219cOqVkxqgZddM5pZSqQK3mfItIJjDWGLPQ41gEkAp0NMacMouc6pxvpZSCg9kHmbhwIgdzDvLy8JcZ2mJonbfBGMMbS3Zy90+9q8gpENPtaKDdahCENClNnbNhDs8sfYbNKZt570/vMf6s8Vz7+bUs3r2Y67pdxwsjXiDAUYONdZRSyktO2pxvIBgoO7e7ZI2mulkcVimlVLXsytjFxAUTyS3K5a2Rb9GrSa86b0N+kZO/frGer9cmcndlKxmO+wxa9oOA8GMO/7L/F6774jr2ZuzFuDe8EYT1h9bDWTD7ytknsfVKKVV73lhqMEZEPNfxs1dwHGPMPi/Up5RSqoY2pmzkzkV3YhMb/xn9HzpFdqrzNhzOymfirNXkHVjP/FY/Q2U7NMRZN0bmFebxyI+P4DIuXh39KjaxsSdjD3axExcVx7RzpjH+rPF10wGllPKC2k47cQHlFSDlHTfG1Nut5DrtRCl1pvrt4G/cu/heIvwjeGvkW7QKrft9D/44cITX35/FtYVfMkx+B98gKMopN28mLu7sfinfbv+WjALrx1Ufmw9Fj1m3Ea1PWs9ZTc6qs7YrpVRNncxpJ7fV8nyllFIn0eJ9i5n601RahrTkXyP/RZOgJlWf5E0uF2sWfIht5d95U7ZTHBAJAx+BvrfCjDal2Y7gIhxrffG2ZJP6x8cABPgEMLT1UF654JXSvBp4K6VOZ7UKvo0x73irIUoppbzr6x1fM33FdLpGdeX1Ea8T7h9e9UneUlyAWTebI4tm0itvH4fsMWSd+wIh/W8ERyAA6/xDeCk/ifk4Scawh2BaY+N+nzA2d76YVy94lUbBjequzUopVQe8tr28UkqpU8esjbN4Mf5FBjQdwN/O/RuBvoF1U3F+BsS/i/nlTST7EAmuWP7X4nGuvvEe/P38AJj+43SeXfosTuO0JikCjYMas3vsHFq3Gc6jddNSpZSqFxp8K6VUA2KM4bXfX+PtDW8zsvVIXjjnBRx2x8mvOOsQ/PIGxL8LBZms9z2bmYV/pt95fyLH7790erMjI9qM4J3L3qFVWCtcxkVsWCz39LuH+/vfr7tLKqXOGLW64fJ0ojdcKqUaOqfLyXO/Psen2z5lbIexPDbgMey2kxzUpmyHFX+HdbPBVcyR2Iu4d+8Qvi2ejytwORkFR/c/iw2LZff9u09ue5RS6hRwMm+4VEopdQoochYxbdk05u+Zz83dbub+XvcjHjs/et2BeFj2Cmz5FuwOUrpezvQ8Bz9suZhwfx/SzVwoAIfNQe+mvXnh/BcYGlv3G/oopdSpplbBt4h0AXYaYwq81B6llFJVGD5nOKn5qeWmTe49mZu73XxyKjYGti+E5X+DvcvY6xvIwxGNmJt9gJwNb4OBMU0u5T83DmXWhplcEncJcdFxJ6ctSil1mqrtyPcGYCDwm4hsA640xqyvfbOUUkpVpKLAGzg5gbezCP740gq6D2+E0OaMDItgUeZeOGJlERNEp7Bzee/m/kQF+vHAoAe83w6llGoAbLU8Pw8IcD9vD1S2WbBSSqnTSWEO/PImC2a2YcxX1xOcvJLp7YbApLUMOPsGGgU2oa3ftbTM/4w3zl3HxvvnEhUYVt+tVkqpU1ptR743Af8nIt+4X98kIudXkNcYY56vZX1KKXVGq5Ob5HNS2LPkWa6P/werTTEFAggIwv6QJuDj4MoOD/D9ymHkFBTzzxt6MrJLHW/eo5RSp6naBt/3A+8BT2JtJ39HJXkNoMG3UkqdgCJXEQv3LGTWplknpfy8wjymfXMHxQd+5bXMIzQuzmGlFONrs9G9UVceG/oYV3W9CoD/rUvkL5+to1GIH7NuGUSnmNCT0iallGqIarvD5QogTkR8gQJgKLDKGw1TSikFWYVZfLn9Sz7c/CGHcg4RGxrrtbITMhKYsmAKi7Z/S3pRDgbwM/Baj7sIHDyJPY4AWoW1Ks3vchle/WE7f/9hO31jI/jn+N5EBft5rT1KKXUm8MpSg8aYIhG5DdisK58opVTtJWYn8uHmD/ly+5fkFOXQN6Yvj/R/hKEthnLep+eVe9NllH9UleVuTt5M50adwRi6v9aBdGceGGglNs4Lb89jl78LrQYB0MrjvLxCJw98tpZ5Gw5xVe8WPHN5N/x8dGMcpZSqKa+t822MeQdARMKB/kAkkAb8YozJ8FY9SinVkP2R8gfvb3yfhXsXAnBB7AVM6DqBrlFdS/MsuWZJjcpcuHMh0xZPY92hdRS5ivio992MS9jAq8WGPT5hTBr0AOED74WA8HLPP5iRx22z4tmYmMkjF3Xm1nPanNw1xJVSqgHz6iY7IvIE8CDgB5T8y5wnIjOMMU96sy6llGoonC4nSw4sYdbGWaw5vIZg32AmdJnAuM7jiAmKOeFy//HbP7hv/n24jAuwlrfqKb60i38XIuOYMOYNOPs68K14oarf96Uz8YPV5BU6eefGPpzXSW+sVEqp2vBa8C0ik4DHgfeBD4FDQAwwHnhcRFKNMf/wVn1KKXW6yy3K5eudX/Phpg/Zl7WPZkHNeLDvg1zR4QqCfINqVJbT6eS5Zc/x1pq36BTdiYU3LGRIyyEA9PSP4pFi4fKifGxN+8CQ+6HTGKhi6/mv1yYw9fP1NAn146Nb+xPXJOSE+6qUUsrizZHvu4B/GGMmeRzbCPwgIlnA3YAG30qpM15ybjKfbPmET7d9SkZBBmdFn8WkXpMY0WoEPraa/bN877x7+eSPT0jNOzoHvKC4ADIS6LH+M5w+MZCXDe1GWEF37DlQxZQRl8vwyqJtvLZ4B/3aRPLP8b2JDHKcUF+VUkody5vBdxtgbgVp/wMmerEupZQ67WxN28qsTbOYt3seTpeTEa1GMKHrBHo06lHtOdQJGQm88ssrzLxgJgBvxr+J0zjxs/vRt1lfXup7N/12/gx/OxuMC7pdAYPvg5ju1So/t7CYKXPWMX/jIa7p05Kn/9QNh09t92NTSilVwpvBdyrQBVhUTlpnd7pSSp1RjDGsSFzB+xvfZ+XBlQT4BHBV3FXc0PkGWoa2rFYZaw+u5YEFD7DiwAryi/IBuHPlv2iHjQX40QUbMb5R4N8cvrgdfAKgz80w8G6IaF3ttiYeyePW9+PZciiTRy/uzC1D9MZKpZTyNm8G3/8FnhGRZGCOMcYlIjZgLPAU1jxwpZQ6IxQ6C/l217fM2jSLHUd20CigEff1uo+r4q4izK/6W7Bf+OGFzN85v/R1V2yMx5em7tfnlfwznpcO+3+FYQ9Bv4kQVPWyg57W7Etn4qzVFBQ5eeemvpzbsXGNzldKKVU93gy+HwJ6AB8B74lIChDtruMX4GEv1qWUUqek9Px05mydw+wts0nNTyUuIo5nhzzLhbEX4mv3rfTct1e/zYsrXmRn+k5GtR3Fd+O/44azb2Bd0jr+3OPPTB8+HcfTjSouYPIf4KjZjZoA//09gQe/WE9MqD+f3NafDnpjpVJKnTTeXOc7U0SGAJcC53B0ne+fgG+Mca91pZRSDdCejD18sOkD5u6cS74znyHNhzChywQGNB1Q6dSNtLw0znrzLBKyEkqP2cRGoG8gAOO6j2Nc93FWQt6RyhtRw8Db5TLMXLCVN/6fvTsPj6o83zj+fbInJCSBsENkSUCBIGJAQUXEDaHVKrhvVaz+qrZa26q12uJWrbZWarXuitUqtlpFxSIgiwsIQS37viNbWEJCyDZ5f3+cEwwhCQmZTEK4P9c1F5lzzpzzTE6AO++8y/RVnNy1BX+/8kSSNbBSRKReBXWebz9gv+c/RESaNOccWVuzeG3Ra8zYOIOIsAh+2O2HXH3c1aQlp1X6mpx9Ofx6yq9Zlr2MGdfNIDEqke9yvyMiLIJerXrxwJAHOP/Y8yu8aBPMfgbmjQta7XsLS/jF+G/5ZPFWLh/QifvP18BKEZFQCGr4FhE5GhSXFjN57WTGLR7H4h2LSY5O5qbjb+LSHpeSEpty0PHrc9bzi//+gk9Wf0JeUd7+7UWBIqLCo9h15y4SYyvpB751EXz5FCz4FzgHvS6Ehf+uc/2b/IGVy7bs4fc/7MmPB3XWwEoRkRBR+BaRI1rmQ5PJzis6aHtKfBRZ954d1GvlFuXyzvJ3eGPpG2zZu4XOzTtz38n3cX6384mJOHCVyHnfzaNHSg/io+IZ8MIAtu7dCkB8ZDxndT2LseeNJSrc6+JxQPB2DtZ+Bl+MhZVTIDIO+t8AJ9/szVyyZibs3XZwcc1qNkBy3rpd3PSPLApLSnnlugGc3r2aPuQiIhJ0Ct8ickSrLHhXt/1wbMrbxBtL3uDdFe+yt3gv/dv2596T7uW0jqcRZt931fhw+YfcN+0+Fm5bSElpCbf0v4W/Df8bDw99mNkbZ/Ons/9UeQs3QKAElrwPX/wVNn8LzVrBGfdC/9EQ1+L743694rDfx7tfb+TudxbQPimGt27sT1rr+MM+l4iIHJ5GGb7NbBgwFggHXnTOPVrFcSOBfwP9nXNZISxRRI4CC7YvYNzicUxeN5kwwji3y7lc0/MaerbsecBxE5ZO4MK3L6S03Ljy9vHtGdRpEACj+41m+mXkQAAAIABJREFUdL/RlV+kaC988zrMehp2r4OWafCDJ+H4yyEypvLX1FKg1PH4pGU8O2MVg7q15Jkr+5EUp4GVIiINodGFbzMLB54GzgY2AnPNbIJzbnGF4xKA24CvQl+liDQ05xyzVle/dtdDHy5meJ92nNApqcZ9mgOlAaZvmM5ri1/j621fkxCZwLU9r+WK466gbbO2FAWKuO/T+3j5m5dpEduCBTcvYGjXoYRZGF2TuvKrQb/ipsybDn2hvO0w53mY+4I3R3fHAXDuH6DHcAgL3sDHvMISbn/rW6Ys2cqVJ6Uy5vxeRIZrYKWISENpdOEbGACsdM6tBjCzt4ALgMUVjnsQ+CPw69CWJyINyTnHrFU7eHLqCuas2VntseNmreXFz9fQISmW83q3ZUSfdvStIojnF+fz/qr3eX3x66zPXU/7Zu25s/+dXJR+Ec0im3Hbx7fx+vzX2Vnw/TXLBk/GR8VTfF9xzd7AjlXeIMr/vQklBdBjBJzyc0g9ucbfg5rauCufG8ZlsWJbHvef34trBh6jgZUiIg0saOHbzCKBO4HLgVSg4uelzjkXXYNTdQA2lHu+ETipwrX6AZ2ccx+ZWZXh28xuBG4ESE1NrcGlRaSx2h+6p6xgztqdtE6IZswPezLmg4q/l38v696zmbx4KxMXbD4giA/PaMvwDC+IZ+/L5p9L/8nby95mT9Ee+qT04ef9fk5aQhpjZozh6p5XA/DiNy+SX5xPdHg0gzoO4olzn6Bvu741fwMb5sKXY2HJhxAeCcdfBgN/Bq261/E7U8V7X7uTm/4xj6JAKa9e15/T0jWwUkSkMQhmy/djwM+BT4CJQGEQz72fv2T9E8CPD3Wsc+554HmAzMxMVx/1iEj9cs7x5aodPDllOXPX7qJN82juP78Xl/bvRExkOH+btrLK2U4SYyMZdWJHRp3YkZx9xfuD+KtfruWlOV+S1HYWgbh5OEoZmjqU/q3689yc57jgmwsoDHj/hJ2aeio3Zd7Ee5e+R4+UHqQm1uIX+dJSWDHJG0S5/kuISYRTfwEn3QQJbYP1LTrIv7I2cM9/FtAxOY4Xr82kWysNrBQRaSyCGb4vAcY45x6s43k2AZ3KPe/obyuTAPQGpvsfn7YFJpjZ+Rp0KdJ0OOf4YuUOxk71Qnfb5jEHhO4yNZ1OMDE2kpH9OtC27Vpc23fJ2voVARdNwc7+FO08jX+uf5OxpWP3H98ytiWjeo7iyj5XAnB2t1pMW1hSCPPf9rqXZC+DxE5w7iPQ72qIrr+l2wOljsf+u5TnZq7m1LQUnr6iH4lx1S9pLyIioRXM8B0PfBGE88wF0s2sC17ovgy4omyncy4H2L+KhZlNB36l4C3SNJSF7ienLCdrnRe6H7igF5dkHhi6a6MwUMhHqz/itUWvsXL3SiJcBDl7ctiUs4n0Fvk8/qPf83pWJB9unkt88TkcG3cd5/fuyPCMdjSLrMWS7ft2Q9bL8NVzkLcF2mTARS94i+OE128Iziss4bY3v2Hq0m1cM/AY7vtBTw2sFBFphIIZvj8CTgU+rctJnHMlZnYrMAlvqsGXnXOLzOwBIMs5N6HupYpIY+Oc4/OV2Tw5ZQXz/ND94AW9uLgOoXtXwS7GLxvPm0vfZMe+HWzftZ3s3Oz9UwKGWRjHJHbyu6ZcTk7+KD5ZvIWJCzbzyhdreH7majokxTKiTzuGZ7Tj+I6JlQ9YzNkIs/8O816FojzoegZc+HfvzxAMcNyw0xtYuXJ7Hg9e0IurB3au92uKiMjhMeeC0xXazDKB14HX8Pp8HzQNgXNufVAudhgyMzNdVpYax0UaG+ccn63I5skpy/l6/W7aJcZw8xlpXJLZkeiIwwvda3LW8ML8Fxi/eDz5hfn8qOePuLbXtQx+cTAOx/FtjufhoQ9zbtq5VZ4jJ794fxD/fGU2xQF3cBDfugi+/CssfMdbmbL3RTDoZ9Du+MP9dtTanDU7+b/X5xEodTxzZT9OSTt4eXsREQktM5vnnMusdF8Qw3dpuaeVntQ5d3j/kwaBwrdI41IxdLdPjOGndQjdzjk+WPEB98y4h405G8nNz93fwr3u9nWkJqZSFCjav6R7bZQP4p+t2M4AFnJbzEROKv2WQEQcYSdeiw28GZJCO6vS23M38Nv3FtCpRRwvXdufLim16CIjIiL1prrwHcxuJzdSRegWESnjnGOmH7q/8UP3Qz/qzcU1CN1Dxg9hR8GBC+uUBEqIj4qna1JXZq6eyZZdWzAzEqISOKfbOTx5zpN0SOwAcFjBGyAxLpKLT2jHxdFfEdj3JOHbFpBDMn8uuZTXCs4kYX4rRri9DM/YTZ+quqYEUaDU8cjEJbz4+RpOS0/hb1f0IzFWAytFRI4EQQvfzrkXg3UuEWl6nHPMWL6dJ6es4NsNXuh++MLejDqx5i3dZcG7qKSIPfl72LN3D/mF+XRM6UjbZm25qe9NbN2zlcfPeZz4qCBNr1e0F77+B8x+GnavJ7xlGvxwLIl9LmN0cRid/OkLX/p8Dc/NXE3H5FhGZHhdU+ojiOcWFPPzN79h2rLt/HhQZ+4dcRwRGlgpInLECFq3kwNOatYDaAHsdM4tC/oFDoO6nYg0DOcc05dvZ6wfujskxXLLGWmMOrEjURG1C409X+nJmi1rKCgqACA6Mprmcc1Jik9i6eilhFkQQ2jeNm/59zkvQMFu6HSytxJl9/MqXf59d34Rn/hB/PMV2ZSUuv1BfESfdmR0qHsQX78jn9Hj5rImey/3X9CLK086pk7nExGR+hGqbieY2Y+Bh/Hm3i7btgW4xzk3LpjXEpHGrSx0PzllBf/zQ/cfLsyoceguChRx1+S7+Oeif4LBgC4DCA8LJzoymsRmiTSPa0505PeL5gYteGevhFlPwbdvQqAIjh0Bg34OqSdV+7KkuCguyezEJZmdDgjiZS3inVrEMjyjHSMyDi+Iz169g5++Po9SB6+NHsCgbhpYKSJyJArm8vKXAy8DM4DfAVvwQviVwMtmVuCcGx+s64lI4+ScY/qy7Tw5ZTn/25hDh6RYHrkog5H9Dh26A6UBbvjwBt5f9j57CvYQKA1gGAlxCXRM6MjaPWvp1KpTtec4bBvmwBdjYelHEB4FfS+HgbdCSnqtT1VZEP9o/mZe+mwNz82ofRB/a8567n1vIce09AZWdtbAShGRI1YwZzv5FljknLuykn1vAD2dcycE5WKHQd1OROqXc45py7bx5JQVzPdD98+GpnHRIUL3Z+s+465pd9GvYz++2f4Ny7csZ2fuTprFNKNrclfuPuVuLupxEVHhUWSMy6jyPAuuXVD7oktLYfnH3vLvG2ZDTBL0v8Fb/j2+de3Pdwi784v4ZNFWPlqwmS9Wel1TyoL4DzLa07tDc/o/PIXsvKKDXhsZbsy772yax2hgpYhIYxeqbic9gLuq2PcP4D9BvJaINBIVQ3fH5FgevSijytCdV5THuAXjeGruU2zM2Uh+QT4Ox67iXYzqOYrLu1/O0NSh9GzV86DXtoxpedBsJ2Xba6W4AOaP95Z/37ECElNh2KNwwtUQHaSBmpVIiovikv6duKR/pwOCeFmLeGqLuEqDN0BxwCl4i4g0AcEM33lAhyr2tff3i0gT4Zzj06XbGDv1+9D9x5Fe6C6/rHlJaQmLdixi5oaZZG3N4ssNX7Jy80oAwsPCadmsJSPSR/DUsKdIiE6o9prTL51et6L37YK5L3nLv+/dBm37wMiXoOePIDyoQ2AOqaogvn5nfkjrEBGR0Arm/zaTgD+Y2RLn3KyyjWbWH3gQ+DiI1xKRBuKcY+oSL3Qv2JRDpxaxPDayDxf267A/dG/M3cjnGz/nlfmv8O2Wb9mTv4dm0c04q/tZ/KTvT3hm3zOM7juae069h/DwEKy9tXu9v/z7OCjeC92GeoMouw4JyfLvh1I+iHe++6OGLkdEROpRMMP3ncBM4HMzWwdsxhtw2RlYTdVdUkTkCOCcY8qSbYydupyFm/aQ2iKOx0b14cITOlAQ2MvMTdOY9d0sZn03i6wNWezO201RideFIjI8ku6J3XnrB28BcOeAO0NT9Ob5/vLv73rPM0Z5y7+3rbrvuIiISH0K5iI735lZX+AG4DS8eb6/BcYCLzvn1O1E5AhUFrqfnLKcRd95ofvRkb1I67SLuVs+5KqPpjNn0xzyCvPonNKZk9qdxBcrvwAHA9oP4JGzHmFol6GhLBhWT/MGUa6eBlHxcNL/wck/haR6milFRESkhoLaydEP2E/6DxE5gjnnmLx4K2OnrmDRd3vo2CqfS4fuYF/EEv687Eu2zt1Kzt4ccvflUjZr0qvDX2VE9xGMHTI2NN1JygsUw6L34MuxsGUBxLeBM38PmddBbHJoa6mDlPioSgddpsRHNUA1IiISbKEdYSQijZ5zjk8Wb+XJqf9jRe63JLVYQ2qfVWwv2MiEjdCpeScK9xWyYfsGABKjExmRPoI/n/tn2sZ762uFNHgX5sHXr8HsZyBnA6R0h/Ofgj6XQkT0oV/fyGTde3ZDlyAiIvWoTuHbzJYDo5xz881sBVDdpOHOOdejLtcTkfpTHCjmpbkz+Mf/JrOrdCHhzTcQHlfIpvw97F67m4LiAtJapDHpukms2LGCZ+c9y8NnPExsVGzDFJy7FeY8581eUrAbUgfCeY9B92GVLv8uIiLSGNS15fsrILfc18FZsUdE6p1zjg25G/hi0xe8v3wGi3fNw1kBRBsdYroxY+VSigPFABjGMYnH8KuBv8LM6J7SnSfOfaJhCs9e4Q2i/N9bXleT434Ag26DTv0bph4REZFaqFP4ds5dXe7rq+pejojUp5zCHOZsmcOX333JrO9msSlvE845cvcWsysvm0CgkA23b6RFXBJt/tSGVnGtuOe0e7gi44qGLh3Wz/YGUS77CMKjoe+V/vLvaQ1dmYiISI0Frc+3md0DvOKc21zJvrbA9c65PwTreiLiGTJ+SJWrPk6+eDILti/YH7YX7lhIqSslOiyOnbsDfLdnHYUluftfExUeRazfT3rrr7aG7D1UqbQUlk2EL8bCxjnewMnBd8KAGyG+VUNXJyIiUmvBHHD5IDAFb37vijr4+xW+RYKssuBdtv20t05jb/FewiyMLgldKMx1NC++mG1b+pIddzuFLpe4iDgGHzOYJ859guNaHRfi6qtQXAD/exNm/Q12rISkVK8/9wlXQVSzhq5ORETksAUzfFe3TFwScPDcWSJSr3q36M2cdXNYvHUJ8918AJLDonj50tFkpE6heXQCrRpTC3L+Tsh6Cb563lv+vd3xDbb8u4iISH2o62wng4Eh5TbdYGbDKhwWC/wQWFyXa4nIwQKlgYO2lbpSwiyM4pJiXvrqJW+jg0hLZni3S3h91BPEx8SFuNJyHk/3gnVFkbFAmL/8+5lwym3QZXCjWP5dREQkWOralHQG8Hv/a4e3umVFpXjB+7Y6XktEyvlq81f8KetPOOcoKCpgT/4e9uTvIToymtTWqURGRBIZ6MoxMcP447l3ccEJnQgPawRBtrLgDVC8D/pc5i//3ju0NYmIiIRIXcP3A8BDeF1OioBT8aYc3M85d3DTnIgctjU5a3hi3hNM3zCdHTk7yM7NprjEmxIwLjqO+Nj4/cf+66KZ/KBP+8YRusFb+r06Fz0XmjpEREQaSF2nGnRAAMDMIhW0RerPsh3LuHbCtSzfuZxubbpxe7/beWDqA0RHRNMqsRXN45oTUa5fdMuYllzQt0MDVuwLlMCG2bB0Iiz9sKGrERERaVDBHMF0pZkd45x7sOIOM7sPWOuc+0cQryfS5C3ZvoSfffwzZm+aTX5xPs45zIzVy3rx4MK2GM/Q2iCwCzq0jue2M9MZntGu4Vu6i/bCqk9h6UewfBLs2wnhUdB1COxe17C1iYiINKBghu87gJer2LcL+AWg8C1yCJNXTaYwUMiI9BGMmTmGqWumEhEeQbPo5oQVZNA8/2bCab7/+ICDpy4/oeFDd952WP6xF7hXT4eSAohJgu7nQo/hkHYmRCfAmMSGq1FERKSBBTN8pwELq9i3yN8vIpV49ZtXefSLR1mxcwWlrpSUuBRGZIxgUe4i+qb25deZf+CeN0qrfP0Pj28fwmrLyV7pdSVZNhE2zAEcJKbCiT/2AvcxgyA88sDXNGtd+aDLZq1DUbGIiEiDCmb4DgApVexLofp5wEWOWhEPRBDwh0uEWRjtk9oTFxfH0h2rOD52NGvX9uaeNxrJNPmlpbBp3veBO3u5t71tHxhytxe422ZUPz3gr1eEplYREZFGKJjhew5wI/B2JftuAuYG8VoiR5y8ojzunnI34xeOZ3fhbgruKSA8PJy0FmlEhkeS0e4kluz5hkBpKUU7T2XLmiHkRjRjUFoyPz29Ffe+V9UHS/WsuADWzPD7b/8X8rZCWAQccwr0vwF6nOetQCkiIiKHFMzw/Qdgspl9AbwIbMJbVv4GYABwbk1P5C/UMxYIB150zj1aYf8d/nlLgO3A9c45jeKSRun+6ffz51l/Jrcod/+2qPAo5n23hE3ZzTm+xc0sLhjPgpyvKM7pQ6qN4syexzE4vRUnHpNMVEQYQGjDd/5OWPGJF7hXTvUWvomKh7Sz4NgRkH42xCaHrh4REZEmImjh2zk3zcwuBf4CvFRu1wbgEufcpzU5j5mFA08DZwMbgblmNsE5V36FzG+ATOdcvpn9FHgMuDQY70OkruZvnc8dk+7gp5k/ZWTPkcz9bi65Rbk0i2zGiW1P45SUO1i0IY4rXv2UqNYfEh6zmYSIblzcZQxXHn8arZvHVHrelPgosvMO7n6SEh8VnMJ3rfO6kiz9CNZ9CS4A8W2hzyVe4O4yGCKig3MtERGRo5S5Qy16UdsTmhnQE2gJZANLXC0uYmYDgTHOuXP9578BcM49UsXxJwB/c86dUt15MzMzXVZWVk3LEKmVSSsncc+n9zB/63xKSksA6N2qN5OvnMvEhcv4YtVu5q4uYE9BCeFR22l1zGT2RsynZXQbft3/DoZ3PQ8L9TLqzsGW+V7YXjoRti7wtrc61uu7fewPoP0JEBYW2rpERESOcGY2zzmXWdm+YHY7AfYvvLOoDqfogNdaXmYjcFI1x48GPq7D9UQOy6qdq+jWohtrdq1h2BvD9m9vGdOGXknnE5l7CSc/MhWANs2jGdqrGfuaTeKr7A8gIobbMm7jquOuIiai8pbuehEohrWfey3cyz6GnA2AQerJcPaDXgt3y26hq0dEROQoE/TwbWa9gB7AQYnCOffPIF/rKiATOL2K/TfiDQIlNVUDwqRuAoEAD332EC98/QKbcjcRbuGU/K4EC7SmZ4tTSCgdyM7sIRTtgu/2GP07x3Nx/y4MSk/im10f8ez8Z9mbvZdR6aO4ue/NtIxtGZrCC/bAyile4F7xCRTkQEQMdBvqzVDSfRg0q2qiIhEREQmmoIVvM0sEPgDKun+UfYZevstJTcL3JqBTuecd/W0Vr3cW8FvgdOdcYWUncs49DzwPXreTGlxbpFInPn8iX2/+ev/zcAunVUx3Tn10Cht3FwK/oWWLOC7LbMXp3VtxcteWxEWF8+n6T7l79hOsz13PKe1P4ZeZvyQ9Ob3+C96z2W/dnghrZkKgCGJbeF1Jjh0BXc+AqLj6r0NEREQOEMyW74eBtsBQYBpwMZADXA/0B66o4XnmAulm1gUvdF9W8bV+P+/ngGHOuUpW6xA5fOtz1nPHpDv4ZNUnTLl6Cv079KekxIiwKJIjexKddy3hgXRii8Pp0S2Rnwz2AnfnlGb7z7FoxyIen/s487bOo1tiN/5+1t85tcOp9Ve0c7B9qdd/e9lEby5ugOQuMOBGL3B3OgnCwuuvBhERETmkoA24NLOVwEN4S8gXA/2dc/P8fc8DUc65H9fwXMOBJ/GmGnzZOfewmT0AZDnnJpjZFCAD2Oy/ZL1z7vzqzqkBl03U4+lVr5ZYi8Vclmcv5/8+/D++3PglhYHvP0g5ocXlROZez9Y93rYebRI4vYcXtjM7JxMdcWCY3bJ3C0998xQTVk2gRUwLbul7CxelX0REWNB7eEFpADZ89X3g3rna296+HxzrD5hsdWz1C96IiIhI0IVqwGV7YKVzLmBmBUBCuX3/At6q6YmccxOBiRW2/a7c12fVsVZpKioL3tVtL2fiiolszt3M6H6j+WrTXKatmwZApCUQXTyQpOLrKdmRxMD0FpzevRWndU+hXWJspefKL87nlUWv8OrCVwm4ANf3vp4bMm4gISqh0uMPW1E+rJ7mzU6y/GPI3wFhkd40gANv8WYpad5AS82LiIjIIQUzfG8Fkvyv1+HNUDLdf94NLS8vofb+rd7AwsgY78+IGN7YPI8n1k9jQf42inHEWySFX5fw9aZ8+hafT6vSoXRt045+3doxIL0dvVPbEBEdV2V3jUBpgAmrJvDUN0+xfd92hnUexm39bqNjQsfa11tVK35cCpx9vxe4V30KJfsgOtFb6ObYEd7CNzHNa389ERERCblghu/P8QL3h8AbwP1mloq3CuX1wEdBvJYczfbthiUTYP7b1R+3cqoXVEsKoXgfbdnDVvO6WTVzcAbh3OYiGL7xTu/4CIDpsAvI8h9lwiIPCvJzoiJ4PLqQpVZCH2J4IrIbfbN3waePHnRs9c9jvcVrqmqtz8+G92+B5h3ghKu8wH3MKRARpMV1REREJGSCGb4fwJujG7wVJ1vhrToZizcP961BvJYcbUoKYcVkWPA2LPsvBAqhReXzUedTytMU82hgG7sKdvHMGV8zb00xeauvI650L6klIzmzwymc0jmeHp3iKE0MJyxQCCUF3qO44PuvKz4v3sfawt38uWAl0wM5tCOCx0pbMKwYbO9WKF7r1Vou9B844c9hunEGtDte/bdFRESOcEFf4bKx0oDLI1BpKWyY7bVwL/oPFOz2umBkjIKMS6BDP7g/af/h71DMnRSwBofbP9FlJK0Kfkd60iCG9GjF4O6tGNStJQkxkbUuZ3fBbp6d/yzjl44nOiKaGzJuOPQiOc550/wdKtSXFMDb11R9njE5ta5XREREGka9D7g0syi8lShHO+c+CMY55Si2bSnMHw8L/g056yEyDo79AT9flMbEncdSMiMCZmyhgL9wVnQR5xtcQhTbKGUNji4YI0pj2dT+TUb0yuD0Hq3omtLssJdvLw4U89ayt3j2f8+SV5zHyPSR3Nz3ZlJia7AwjZnXpSQiGmISD+v6IiIi0nQEJXw754rMSzYFwTifHIX2bIaF//ZC95YFYGHeCoxD7/X6OEfHM2HuR+y12eREvkFx2DqglDcM3ixtwZ2Fr9GlZRR3d09g2HHdGNClBTGRdZvT2jnHpxs+5Yksb5GcQe0H8avMX4VmkRwRERFpkoLZ53sCMBKYHMRzSlNWsAeWfOAF7jUzAefNUT3sj9D7IohvTSAQYN7meXRKyCBAEdnRD3nz5jgIcy1JKD6bhMDlfH7XGXRMDt6KjYt3LObxuY+TtTUrNIvkgDc3eVVzlouIiEiTEOzw/Tczewt4D28BnAM6lDvnZgbxenIkKimCVVO9wL3sY6+vc3JnOP1Orx93ShpFgSLun3Y/L3zzMtvztwDQcd/7hBNFbGAwsaV9SAgMO+C0wQreW/du5a/f/JUPVn1Ackwy9518X/0tklNRLRYFEhERkSNTMBPFf/w/L/Ef5YO331aJ1rY+GjkHG+Z4gXvRu7BvF8S2gBOuhj6XQMf+YEZpqaP/s4P4euss/3UA4SRGdOP2s1N5avImWhffWS8l5hfn8+qiV3ll4SsEXIDrel9XP4vkiIiIyFEtmOH77CCeS5qC7cu9qQHnvw2713nzWR87HPpcCt2GsmbPRn728c+ZuvpTTm9zB9lbT2dJYQSER9Imug+39nuQnww8gzbNvdlEnpq8KegllrpSJqyawF+//mvdF8kREREROYSghW/n3NRgnUuOYLlbYeE7Xiv35m+9gZNdTochv4HjfsD6gl1c9q8rmDv+fEpKi7zXOPhywwyuPvZC7uv5JkN6tCYx9uCpAFPio8jOK6p0++GYs3kOf8r6E0t2LqFPSh+eGPIEfVv3PaxziYiIiNREncK3mQ0F5jjn8oJUjxyJCnNhyYdeK/fq6eBKoV1fOPcP0Hsk/9k4i682/I9eBYMY/80XzNr6BQDh1pw+ycN46IxHOPO4Y4iOqL5XUta9tf9wZcj4Iewo2HHQ9siwSIpLi2nXrB2PDX6MYZ2HHfZUhCIiIiI1VdeW78nAQGAOgJmFAdPx5vvW6LGmLFAMqz71upQs/chb0TEpFU69g0CvkTyzbiqPf/EnNnzyM8CBC+OYgv50SWnPRV0f4q5TbyKzc0vCwuo38FYWvAGKS4u5rd9th14kR0RERCSI6hq+KyYnA04FNEqtKXIONmZ9P3AyfwfEJkPfywn0GoWlDuTbTTkMfKEjRaX5/mvCaBbeiR+l/ZQxZw6mW6t4zIbUe6kFJQWszlld7TE3ZNxQ73WIiIiIlBeC+dPkiJe98vuBk7vWQEQM9DiPXT2GcduKD/nP/FfIm/ckPewvFOSnExnVj/iYbG7I+C23Dx5Ju8TYeiutuLSY9XvWs2L3ClbuWsnK3d5jQ+4GSl1pvV1XRERE5HAofEvl8rbBwne9Vu7vvgYMugyGwb/imfwd3DHtNxQuHucd68CIomPrXH42sC9Denxa6YDJuih1pWzK3eSF7N3fh+w1OWsoKS0BIMzCSE1IpXtyd4Z3GU5aUhq/nPHLoNYhIiIiUhfBCN8dzKyr/3V4uW27Kx7onKu+H4A0rKK9Xv/t+eNh1TRwAWibQVbmdfx8w+fElTSn/Tfd+WTVfyiM3EeYxZHe/FQeOP0xzs/oXefl3MFb0n1b/rb94XrFLi9sr85Zzb6SffuP6xDfgW5J3Titw2mkJaWRnpxOl8QuRIdHH3jCGXUuSURERCRoghG+/13JtveqOFY0Wi4/AAAgAElEQVSL7DQ2gRJvhpL542Hph1CcD4md+LjHWdy5+WsWbZ2N82cnMbeE05qN5uenXMPg9FsZ2K094XUYMLmrYNcBAbvskVuUu/+YlNgU0pLSGJk+kvTkdNKS0uiW1I1mkc1qdI2WMS0rHXTZMqblYdctIiIicrjqGr6vC0oVElrOwaavvX7cC9+BvdsJRCXwWacBtD/2p/xnRyp3z+nlHwsxYa05K/UqHjvnPo5tl1jrKfnyivJYlbNqf5/ssv7Z5UNxQlQC6UnpnNf5PNKS00hL8h7JMcl1eqvTL51ep9eLiIiIBFOdwrdzblywCpEQ2Lka5v/La+XeuYpii+AvyW15qtjYWLwJ1myi4+JLiQ4rpUeLyxjcOZMxZ91M+6SaDZgsKClgTc6aAwL2yt0r2bx38/5jYiNi6ZbYjdM6+t1FktJJS06jVWwrzbMtIiIiTZ4GXDZ1e7O9gZML3oaNcwEoST2FkYESJuxZALt2ggMIp3XMsYw5uzuj+h5PYtzwKk9ZNsPI/q4ifshen7t+/wwjEWERdE3sygmtT+DipIu9luzkNDrEdyDMwkLwxkVEREQaH4XvpqgoH5ZN9KYGXDmF71wxD0RG8nbYPrrGnEvOqp+ynX9gUctIbXYi957yCFdlnnrQgMlSV8qmvE0HdhepYoaRtKQ0hnUZtr81u1PzTkSGBXfGExEREZEjncJ3UxEogTUzYMG/YMkH5BXt4SdhpXxEAbmUQgngYFXBd/xqUGfO6fU0/VL/SXiY7Z9hZN62lQe0Zq/KWXXADCPtm7UnLTlt/wwjaUlpdEnsohUiRURERGpI4ftI8Xg67N128PbYZDj+clj4DjPzNvFVWBjntvwRL+45gbcKvTmuo8KSGNj2Ap4c9hiprSK8wY+7J/Hfr75v0S4/w0jLmJakJXszjJR1F+mW2I34qPhQvVsRERGRJsmccw1dQ0hkZma6rKyshi7j8I1JPGhTKaX8mxKesRJmUUIRgINjiiZwUpcE4pI/Z2DXLuwq2ciK3StYtXsV2fuy97++bIaRsoBdNo1fi5gWoXtfIiIiIk2Mmc1zzmVWtk8t30eYIkqJAMIIoz/5fG1lAxwjSYltQ/fWxxEX+xSL8zfDXsha4M0w0jWxK6e0P2X/XNlpSWm0jmutGUZEREREQkjhuxEZMn5IpQvCJEUlMZQC3ggrZY0LcGN8K2Ji4zGXSIfSEhKaJRIRHkFEWARtEuP9QY+aYURERESksVH4bkQqBu+ikiK27NzC4n2L+dxKCSOMhLjmTE1IoIdFcGoxpAUgbehfSE9KJ7V5qmYYEREREWnEFL4bkZJACXvy9xAeFk5is0TCw8LZV7iPxGaJnOrCuNJF0Ke4hC6bs4kp31e/87CGK1pEREREakzhOwQyH5pMdl7RQdtT4qO4ZcQW7p/+IOv3rMLh9d9uHtd8f/ju3rE7ZsaEbQWVz3bSrHV9ly8iIiIiQdIow7eZDQPGAuHAi865RyvsjwZeA04EdgCXOufWhrrOmiofvAMEyA+fSkLgHLLzirj+/evAAuCM1smtaR7XnOjI6P3H7x8Q+esVoS5bRERERIKs0YVvMwsHngbOBjYCc81sgnNucbnDRgO7nHNpZnYZ8Efg0tBXWzMB9rE74jXyI2ZQyh4AIgJtiaUPp7W5lVO7HMd9Q29gwJt9G7hSEREREalPjS58AwOAlc651QBm9hZwAVA+fF8AjPG//jfwNzMz1wgnLb/xgxvZGPMCGOAAIogqTSMcby7tmT99cv+xLWNaVjrbScuYlqEpVkRERETqVWMM3x2ADeWebwROquoY51yJmeUALYHs8geZ2Y3AjQCpqan1VW+1zks7jxfnvUZ0oDfJRT8hio5VHjv90umhK0xEREREQq4xhu+gcc49DzwP3gqXDVHDhcddSGrBOw1xaRERERFpZBrjyiubgE7lnnf0t1V6jJlFAIl4Ay8bpZT4qFptFxEREZGmqTG2fM8F0s2sC17Ivgy4osIxE4BrgVnAKODTxtjfu0zWvWc3dAkiIiIi0gg0uvDt9+G+FZiEN9Xgy865RWb2AJDlnJsAvAT8w8xWAjvxArqIiIiISKPW6MI3gHNuIjCxwrbflfu6ALg41HWJiIiIiNRFY+zzLSIiIiLSJCl8i4iIiIiEiMK3iIiIiEiIKHyLiIiIiISINeIZ+oLKzLYD6xro8ilUWH1TmiTd56ZP9/jooPt8dNB9bvoa8h4f45xrVdmOoyZ8NyQzy3LOZTZ0HVK/dJ+bPt3jo4Pu89FB97npa6z3WN1ORERERERCROFbRERERCREFL5D4/mGLkBCQve56dM9PjroPh8ddJ+bvkZ5j9XnW0REREQkRNTyLSIiIiISIgrfQWRmw8xsmZmtNLO7K9kfbWbj/f1fmVnn0FcpdVGDe3yHmS02s/lmNtXMjmmIOqVuDnWfyx030sycmTW60fRyaDW5z2Z2if93epGZ/TPUNUrd1ODf7FQzm2Zm3/j/bg9viDqlbszsZTPbZmYLq9hvZvZX/+dgvpn1C3WN5Sl8B4mZhQNPA+cBPYHLzaxnhcNGA7ucc2nAX4A/hrZKqYsa3uNvgEznXB/g38Bjoa1S6qqG9xkzSwBuA74KbYUSDDW5z2aWDvwGOMU51wu4PeSFymGr4d/le4G3nXMnAJcBz4S2SgmSV4Fh1ew/D0j3HzcCfw9BTVVS+A6eAcBK59xq51wR8BZwQYVjLgDG+V//GzjTzCyENUrdHPIeO+emOefy/aezgY4hrlHqriZ/lwEexPsFuiCUxUnQ1OQ+/wR42jm3C8A5ty3ENUrd1OQeO6C5/3Ui8F0I65Mgcc7NBHZWc8gFwGvOMxtIMrN2oanuYArfwdMB2FDu+UZ/W6XHOOdKgBygZUiqk2CoyT0ubzTwcb1WJPXhkPfZ/8iyk3Puo1AWJkFVk7/P3YHuZvaFmc02s+pa1qTxqck9HgNcZWYbgYnAz0JTmoRYbf//rlcRDXVhkabMzK4CMoHTG7oWCS4zCwOeAH7cwKVI/YvA+5h6CN6nWDPNLMM5t7tBq5Jguhx41Tn3ZzMbCPzDzHo750obujBputTyHTybgE7lnnf0t1V6jJlF4H3EtSMk1Ukw1OQeY2ZnAb8FznfOFYaoNgmeQ93nBKA3MN3M1gInAxM06PKIU5O/zxuBCc65YufcGmA5XhiXI0NN7vFo4G0A59wsIAZICUl1Eko1+v87VBS+g2cukG5mXcwsCm/gxoQKx0wArvW/HgV86jTR+pHkkPfYzE4AnsML3uofemSq9j4753KccynOuc7Ouc54ffvPd85lNUy5cphq8m/2e3it3phZCl43lNWhLFLqpCb3eD1wJoCZHYcXvreHtEoJhQnANf6sJycDOc65zQ1VjLqdBIlzrsTMbgUmAeHAy865RWb2AJDlnJsAvIT3kdZKvIEBlzVcxVJbNbzHjwPxwL/8sbTrnXPnN1jRUms1vM9yhKvhfZ4EnGNmi4EA8GvnnD6tPELU8B7/EnjBzH6BN/jyx2oUO/KY2Zt4vyin+P33fw9EAjjnnsXrzz8cWAnkA9c1TKUerXApIiIiIhIi6nYiIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfInLEM7Mfm5nzH90r2X96uf1nNUSNh1LhPTgzyzWz/5nZrf6iXPV9/TFm5ipsc2Y2ppbnud3MLgpqcd5515rZq4e4rjOzAdUc85mZrTF/HtAaXvcG/7wda1myiEilFL5FpCnJBa6uZPu1/r4jwcXAQGAkMAd4CvhdA9UyEHixlq+5HQh6+K6BfwIlVH7/MbMuwCnAa5rHWUQaksK3iDQl7wJXlW/ZNLNYvBVl32mwqmrnW+fcbOfcJ865nwDTgduqOthfsS2qPgrx69hYH+cONn9F2Y+By8wsspJDrgEMeC2khYmIVKDwLSJNyT+AY4BTy227EO/fukrDt98lZarfzWOvmU0ys94VjjnHzCaa2WYzyzezhWb2SzMLr3DcWjN73cwuM7Ml/vmyzOxUDt9coLmZta5wjevNbClQBIzw98WZ2R/9rhVF/p+/NbMD/q03sxP8LhgFZrbJzO7DC6YVvzcHdTsxs+PN7D9mtsPM9pnZMjP7TVlteN//K8t1n3m1wmsnmNku/7VfmNlplVz3Nv99Fvjfv4OOqcI4IAU4r5J9VwNfOOdW+deINbOxZrbIv0+b/dp6VHcBM4vw39e9Fban+duvqrD9DDP71Mzy/MfHZtazhu9HRJogLS8vIk3JOmAmXtD6zN92DfAfIK/iwWY2Angf+AgoC013AZ+ZWR/n3AZ/W1dgKl4XkAIgExgDtALurnDa04AewH3+sQ8CH5pZZ+fc7sN4T13wljYvX/8ZQF/gfmAbsNbvFz4J6OlfcwFwsl9HC7xltDGzFOBTYAted5xC4NdA6qEK8ftTT8dbovkXwEYgHejjH3Ih3jLO/8P7/gBs91/bD++efAP8BG+J5/8DppjZIOfcPP+40cCTwKvAeCANeBNIOFR9wAfATrz7P6Fc3YOAbsAfyx0b6z8e8L8XLYFbgFlmdqzfkl4nZnYB3qcx7wNX4P0SeDff/3xtqus1ROQI5JzTQw899DiiH8CPAYcX1K4HdgExQDu8fsBnA0P8Y84q97qVwNQK52oOZANPVnEtw2u4+K1/nbBy+9b625LLbcv0r3tFDd9DD//8ycBNeMH7vQrXyAfaVnj91f7rB1fY/lu81vHW/vOH/eedyh3TzH/PrsJrHTCm3POZwAYgrpr3sRZ4vZLtU4ElQFS5beH+tvf852H++f9b4bWX+rW8WoOfhafxfulJKrftWWAfkFjN68L970M+8LNy22/wr93Rfx7hP7+3wuvT/O1Xlfs5WQtMqnBcEt4vCH9q6L83euihR8M81O1ERJqafwHRwA+BK/FaNadWPMjM0vFaQ9/wuxJE+K3H+cAsYHC5Y9uZ2XNmtg4vuBYDD+EFqdYVTj3LOber3PMF/p+HbFn2LfXPvxN4BngD7xeK8mY757ZU2DYMr+X/ywrv5xMgEq8VHLxBlLPd9636OOf24rUaV8nM4vAGLL7hnMuv4Xspe20scDrevSktV5sBU/j+e93Rf7xd4RTv4P0SVRPj8O7/Jf61y75+3zmXU6Guy8xsjpnl+OfPw2sNr7brSQ0di9cFp+LPVx7wFeV+vkTk6KJuJyLSpDjncs3sPbyW4M54YbHUDp5driw0v+Q/KloP4PeXngC0x+tKsRSvFfVHeK3KMRVet7NCPYX+tSseV5UL8bpz5ALrnHMFlRyzuZJtrfHCXnEV523p/9kOWFjJ/q2HqCsZr2X6cAZgtsBrWb7PfxzE/z63q6wW51yJme2oyYWcc3P8vvDXAM/j/RKWjBfKy1/vQrzuLK/g3ddsoBSv605N71V1yn6+xlW8tm91EK4hIkcghW8RaYpew+vHHQZcXsUxZWHuN3itrxUV+X92w+s6crVz7vWynWb2w+CUepCFzrmVhzimsqnydgBr8Ft8K7HW/3Mz0KaS/ZVtK28XXjjtcIjjKrPbf+3TVDHbiP8LUtkvFQfU4rcYtzz4VVUaBzxiZl3xfgnbgvcJQHmXAUudc/s/VTCzGLxPM6oTwPsFp+IMMxXrK/v5uhOYVsl5Cg9xHRFpohS+RaQpmozXdWG3c25RFccswwukvZxzj1Zzrjj/z/0tyv5UdlcGoc5g+i/e3OB5zrml1Rw3C/i1mXUq63piZs3wWoir5JzLN7PP8aZyfMA5t6+KQwvxum6Uf+1eM/sMOB742jlXWsVrN+L1+b4EeLnc9pHU7v+r1/H6tt+ON/PJX51zgQrHxHFwV5ZrOMQsYM45Z2YbgN4Vdo2o8Hwx3nvp6Zx7vBa1i0gTp/AtIk2OH7SqavEuO8aZ2S3A++bNk/02XteDNsAgYL1z7gm8AYHrgIfNrKzV8xf1Wf9hegO4DphqZn/Gm3EkCq/l/nzgR35f7b8ANwOf+NMIls12UlWYLu9XwAy8GUH+jBeWuwJ9nXM/849ZDJxmZj/Aa3HOds6tBe7AG7A5ycxewmuBTwH6AeHOubv91u/7gRfN7BXgLbyBjHcDe2r6jXDObTSzqcCteP3KK+v28V/gb2b2J7z5wfv7x9fkOm8Bd/lTLM7F6799WYUaSs3sVuBdv0X9X3it4W3xfr5WO+fG1vQ9iUjToQGXInLUcs5NxAtOzfBWcpwEPIYXkGb5xxTh9e/egtdl4mm8EFlda3nIOeeKgXOBF4Ab8ab8ewNvOsEv8bvROOeygTPxftEYh/d+/suBLc1VXWMu3qDLDXjTLk7EC+7l+4H/Bu9ThbfxgukY/7Vf4wXcHcBf8bqBjAUy8L6fZdd4Ca/FeijeFH3X4f0iVX4Qa02Mwwve3zrnFlSy/1ngEbwpAD/A+96NoGYroT7kv/7neFMJpuO1mh/AOTcBb6Bpc7xxBZPwfm5a4w26FJGjkDmnVXZFREREREJBLd8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhovAtIiIiIhIiCt8iIiIiIiGi8C0iIiIiEiIK3yIiIiIiIaLwLSIiIiISIgrfIiIiIiIhEtHQBYRKSkqK69y5c0OXISIiIiJN3Lx587Kdc60q23fUhO/OnTuTlZXV0GWIiIiISBNnZuuq2nfUhO+G0vnujxq6hAaz9tERDV2CiIiISKOiPt8iIiIiIiGilu8QOZpagY/m1n4RERGR6qjlW0REREQkRBS+RURERERCROFbRERERCREFL5FREREREKkxuHbzAabWXwV++LNbHDwyhIRERERaXpq0/I9DehZxb4e/n4REREREalCbcK3VbMvGgjUsRYRERERkSat2nm+zawz0LXcpsxKup7EAtcD64NamYiIiIhIE3OoRXauBX4POP/xFAe2gDv/eQlwS30UKCIiIiLSVBwqfL8KTMcL2J/iBezFFY4pBJY753YGuzgRERERkaak2vDtnFsHrAMwszOAr51zuaEorKlIOO5uADLG3d3AlYROwnFlX41oyDJEREREGp1DtXzv55ybUZ+FiIiIiIg0dTUO32YWBfwGuBxIxZvhpDznnKvx+Y42C65d0NAlhEzGuIyGLkFERESkUapNWH4cr8/3x8C7eH29RURERESkhmoTvkcBv3fOPVxfxYiIiIiINGW1Cd/xwKz6KqTJG5PY0BWETpfUhq5AREREpFGqzQqXHwCD66sQEREREZGmrjYt308Br5lZKTAROGheb+fc6mAV1uSMyWnoCkJHAy5FREREKlWblu9ZQDowBvgKWFHJo1pm1snMppnZYjNbZGa3+dtbmNlkM1vh/5nsbzcz+6uZrTSz+WbWr9y5rvWPX2Fm19bifYiIiIiINIjatHxfj7ecfF2UAL90zn1tZgnAPDObDPwYmOqce9TM7gbuBu4CzsML/OnAScDfgZPMrAXesveZfk3zzGyCc25XHesTEREREak3tVlk59W6Xsw5txnY7H+da2ZLgA7ABcAQ/7BxeEva3+Vvf80554DZZpZkZu38YyeXLWnvB/hhwJt1rVFEREREpL7UpttJUJlZZ+AEvC4sbfxgDrAFaON/3QHYUO5lG/1tVW2veI0bzSzLzLK2b98e1PpFRERERGqrNitcvnyIQ5xzbnQNzxUPvAPc7pzbY2YHnMTM6tq9pexczwPPA2RmZgblnCIiIiIih6s2fb6HcnCf7xZAArDbfxySmUXiBe83nHPv+pu3mlk759xmv1vJNn/7JqBTuZd39Ldt4vtuKmXbp9f4nYiIiIiINIAadztxznV2znWp8EjEC8FbgJGHOod5TdwvAUucc0+U2zUBKJux5Frg/XLbr/FnPTkZyPG7p0wCzjGzZH9mlHP8bSIiIiIijVZtWr4r5ZybaWZ/wZsH/NRDHH4KcDWwwMy+9bfdAzwKvG1mo4F1wCX+vonAcGAlkA9c519zp5k9CMz1j3ugbPCliIiIiEhjVefw7VuNN3iyWs65zwGrYveZlRzvgFuqONfLwKH6oYuIiIiINBp1nu3EzCLw5uneWOdqRERERESasNrMdvJpJZujgO5AS+D/glWUiIiIiEhTVJtuJ2EcPNtJLvAu8JZzbnqwihIRERERaYpqs8LlkHqsQ0RERESkyWuwFS5FRERERI42tZrtxMwygN8DpwPJwC5gGvCgc25B8MsTERERkbrKGJfR0CU0iAXXNr54WpsBl/2BGcA+vMVvtgBtgR8CI8xssHNuXr1UKSIiIiLSBNSm5fsRYCFwpnMut2yjmSUAU/z95wS3PBEREREJlgVr1jd0CSGR0SW1oUuoUm3C98nA1eWDN4BzLtfM/giMC2plIiIiIhJcY3IauoLQaMTdbGoz4LLiNIO13S8iIiIiclSrTfj+CrjH72ayn5k1A+4CZgezMBERERGRpqY23U7uAaYD68zsQ2Az3oDL4UAzvBlQRERERESkCrVZZGeOmZ0M/A44F2gB7ERTDYqIiIiI1Ei14dvMwoARwBrn3ELn3HxgVIVjMoDOgMK3iIiIiEg1DtXn+yrgTWBvNcfkAm+a2eVBq0pEREREpAmqSfh+xTm3pqoDnHNrgZeAa4NYl4iIiIhIk3Oo8N2P/2/v3mLlKsswjv8fCojGipF6QRRaVEAOJWIqol5oRE1BAxJRQVFqUK5QVGLEqLFRY1CCoAYPqAQ0noALbQIIiGAVgUDEcKhiGqhQMOFoIeEgh9eLWSU7pe1M2bPX2jPr/0uaPWuvtXef5J3Z8863vrU+uGyE3/MHYNns40iSJEnTa9gFlwuBh0b4PQ81x0qSJGmeWnLKRV1HaMXCfbpOsGXDRr7vBxaP8Ht2b46VJEmStAXDRr7/wmAu9y+GHLeiOVaSJEnz1LpT3911hFYsPe+UriNs0bCR7zOBQ5KckWTHTXcm2SHJmcDbgTPmIqAkSZI0LbY68l1V1yQ5GTgd+HCSy4B/N7sXA+8EdgFOriqXl5ckSZK2YugKl1V1ZpK/AZ8HjgRe2Ox6jMFy86dW1Z/nLKEmVl8u6pipL6fzJEnS8zPS8vJVtRpY3ax4uaj59gNV9fScJZMkSZKmzEjN90ZV9Qxw7xxl0ZRZt9OHuo7QgQ1dB5AkDbNy564TtG+P3btOoMY2Nd+SJEmTbqmNqDpk8625s7JHo8AbR1F6MprS5zeum4+7uesI7enJ83mmPj+3JbVjopvvJMuB7wALgJ9U1akdR1JP+YbdH0vPW9p1hPY0z+ub77iz4yDS3HjkH7YNat/ENt9JFgBnMbjd4Xrg+iSrqmpNt8m0Ua+alJ7q0xvXwn3m74INc62PHy779Nzu5/U5De9QpQ5MbPMNHASsrarbAZL8GjgCsPlWZ/r0ht03G2vbp9tJ+gG6H5Y8/suuI3RmXdcB1Eupqq4zPC9JjgKWV9XHm+2PAG+sqhNnHHMCcEKzuTdwW+tBBxYB93f0f6s91nn6WeN+sM79YJ2nX5c1XlxVL9/cjkke+R6qqs4Gzu46R5IbqmpZ1zk0t6zz9LPG/WCd+8E6T7/5WuPtug4wC3cDu83YfmXzPUmSJGlemuTm+3pgzyR7JNkROBpY1XEmSZIkaYsmdtpJVT2V5ETgUga3Gjynqm7tONaWdD71Ra2wztPPGveDde4H6zz95mWNJ/aCS0mSJGnSTPK0E0mSJGmi2HxLkiRJLbH5HqMky5PclmRtkucsh5fkBUl+0+y/LsmS9lNqNkao8WeTrElyU5IrkizuIqdmZ1idZxz3viSVZN7dykrDjVLnJB9oXtO3JunvajQTaoS/2bsnuTLJjc3f7cO6yKnZSXJOknuT3LKF/Uny3eZ5cFOS17edcSab7zGZsdz9ocC+wDFJ9t3ksOOBh6rqNcAZwDfbTanZGLHGNwLLquoA4ELgW+2m1GyNWGeSLAROAq5rN6HGYZQ6J9kT+ALwlqraD/h060H1vI34Wv4ScH5VHcjgrmnfbzelxuRcYPlW9h8K7Nn8OwH4QQuZtsjme3yeXe6+qv4HbFzufqYjgPOaxxcChyRJixk1O0NrXFVXVtWjzea1DO4/r8kyymsZ4GsMPkA/3mY4jc0odf4EcFZVPQRQVfe2nFGzM0qNC3hJ83hn4J4W82lMqmo18OBWDjkC+FkNXAu8NMmu7aR7Lpvv8XkFcNeM7fXN9zZ7TFU9BWwAdmklncZhlBrPdDxwyZwm0lwYWufmlOVuVXVRm8E0VqO8nvcC9kpydZJrk2xtZE3zzyg1Xgkcm2Q9cDHwyXaiqWXb+v49pyb2Pt/SfJbkWGAZ8Naus2i8kmwHfBtY0XEUzb3tGZymfhuDs1irkyytqv92mkrjdAxwblWdnuRNwM+T7F9Vz3QdTNPLke/xGWW5+2ePSbI9g1NcD7SSTuMwSo1J8g7gi8DhVfVES9k0PsPqvBDYH7gqyTrgYGCVF11OnFFez+uBVVX1ZDcWgagAAALlSURBVFXdAfyLQTOuyTBKjY8HzgeoqmuAnYBFraRTm0Z6/26Lzff4jLLc/SrguObxUcAfy1WOJsnQGic5EPgRg8bb+aGTaat1rqoNVbWoqpZU1RIGc/sPr6obuomr52mUv9m/ZTDqTZJFDKah3N5mSM3KKDW+EzgEIMk+DJrv+1pNqTasAj7a3PXkYGBDVf2nqzBOOxmTLS13n+SrwA1VtQr4KYNTWmsZXBhwdHeJta1GrPFpwIuBC5prae+sqsM7C61tNmKdNeFGrPOlwLuSrAGeBj5XVZ6tnBAj1vhk4MdJPsPg4ssVDopNniS/YvBBeVEzf/8rwA4AVfVDBvP5DwPWAo8CH+sm6YDLy0uSJEktcdqJJEmS1BKbb0mSJKklNt+SJElSS2y+JUmSpJbYfEuSJEktsfmWpJ5JsiJJzfj3dJK7k5yfZO8Zx61M4i2xJGmMvM+3JPXX+xms4rgAeDXwZeCKJPtV1QbgJ8DvO8wnSVPH5luS+uvvVbW2eXx1knuAy4E3A5dU1XoGzbkkaUycdiJJ2ujh5usOsPlpJ800la8n+VSSO5I8kuRPSfZrPa0kTSBHviWpvxYk2Z7BtJNXAd8A7gWuGvJzxwK3AScBOwKnAb9L8tqqemru4krS5LP5lqT++ucm2/cA76mqhzd38AxPNsc9CZAE4ALgIOCv4w4pSdPEaSeS1F9HAm9g0DS/F1gDXJxknyE/d/nGxrtxc/N19/FHlKTp4si3JPXXLTMuuCTJZcBdwErgg1v5uQc32X6i+brTWNNJ0hRy5FuSBEBVPQbcDhzQdRZJmlY235IkAJK8iMH9vu/rOoskTSunnUhSf70uySIgwK7AicDLgO91mkqSppjNtyT11wUzHt8H3AIsr6pLO8ojSVMvVTX8KEmSJEmz5pxvSZIkqSU235IkSVJLbL4lSZKklth8S5IkSS2x+ZYkSZJaYvMtSZIktcTmW5IkSWqJzbckSZLUkv8DrHvNRAw5eOMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_reliability_diagram(\n",
    "    calibration_data_after_isotonic_scaling,\n",
    "    test_pred_calibrated_isotonic,\n",
    "    ece=ece_after_scaling_isotonic,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compare ECE before and after calibration.\n",
    "\n",
    "Let's print the ECE for the original model before calibration and for the model after calibration using Temperature Scaling and Isotonic Regression.\n",
    "\n",
    "If model calibration is successful, then either one or both of the calibrated models should have reduced ECE across all or most of the classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ECE before calibration:          0.0127, 0.0221, 0.0183\n",
      "ECE after Temperature Scaling:   0.0076, 0.0088, 0.0115\n",
      "ECE after Isotonic Calibration:  0.0058, 0.0106, 0.0087\n"
     ]
    }
   ],
   "source": [
    "cal_error = \",\".join(format(e, \" 0.4f\") for e in ece)\n",
    "print(\"ECE before calibration:         {}\".format(cal_error))\n",
    "cal_error = \",\".join(format(e, \" 0.4f\") for e in ece_after_scaling_temperature)\n",
    "print(\"ECE after Temperature Scaling:  {}\".format(cal_error))\n",
    "cal_error = \",\".join(format(e, \" 0.4f\") for e in ece_after_scaling_isotonic)\n",
    "print(\"ECE after Isotonic Calibration: {}\".format(cal_error))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Recalculate classifier accuracy before and after calibration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = np.argmax(test_pred, axis=1)\n",
    "y_pred_calibrated_temperature = np.argmax(test_predictions_calibrated_temperature, axis=1)\n",
    "y_pred_calibrated_isotonic = np.argmax(test_pred_calibrated_isotonic, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accurace before calibration:         0.89\n",
      "Accurace after Temperature Scaling:  0.89\n",
      "Accurace after Isotonic Calibration: 0.89\n"
     ]
    }
   ],
   "source": [
    "print(\n",
    "    \"Accuracy before calibration:         {:.2f}\".format(\n",
    "        accuracy_score(y_pred=y_pred, y_true=np.argmax(test_targets, axis=1))\n",
    "    )\n",
    ")\n",
    "print(\n",
    "    \"Accuracy after Temperature Scaling:  {:.2f}\".format(\n",
    "        accuracy_score(\n",
    "            y_pred=y_pred_calibrated_temperature, y_true=np.argmax(test_targets, axis=1)\n",
    "        )\n",
    "    )\n",
    ")\n",
    "print(\n",
    "    \"Accuracy after Isotonic Calibration: {:.2f}\".format(\n",
    "        accuracy_score(\n",
    "            y_pred=y_pred_calibrated_isotonic, y_true=np.argmax(test_targets, axis=1)\n",
    "        )\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion\n",
    "\n",
    "This notebook demonstrated how to use temperature scaling and isotonic regression to calibrate the output probabilities of a GraphSAGE model used for multi-class node attribute inference."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden",
    "tags": [
     "CloudRunner"
    ]
   },
   "source": [
    "<table><tr><td>Run the latest release of this notebook:</td><td><a href=\"https://mybinder.org/v2/gh/stellargraph/stellargraph/master?urlpath=lab/tree/demos/calibration/calibration-node-classification.ipynb\" alt=\"Open In Binder\" target=\"_parent\"><img src=\"https://mybinder.org/badge_logo.svg\"/></a></td><td><a href=\"https://colab.research.google.com/github/stellargraph/stellargraph/blob/master/demos/calibration/calibration-node-classification.ipynb\" alt=\"Open In Colab\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\"/></a></td></tr></table>"
   ]
  }
 ],
 "metadata": {
  "file_extension": ".py",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  },
  "mimetype": "text/x-python",
  "name": "python",
  "npconvert_exporter": "python",
  "pygments_lexer": "ipython3",
  "version": 3
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
